How do I plot several averages at once?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Max Mason
il 27 Ago 2018
Modificato: Walter Roberson
il 28 Ago 2018
Attached is an excerpt of a much longer text file. There are 19 columns total, each row leads with a time stamp, there are 5 rows per instance of time. I need to plot the averages of those columns with their respective times. There should be a figure for the columns 4-18.
For example, the text will read:
%Plot.txt
01-11-17_04,14,09PM $VNINS,317667.094785,1973,8085,+035.478,+004.194,-000.878,+34.61265901,-118.07304581,+00744.505,+000.015,-000.019,+000.553,39.5,03.4,0.55*60
01-11-17_04,14,09PM $VNINS,317667.294783,1973,0085,+035.481,+004.196,-000.879,+34.61265898,-118.07304572,+00744.422,+000.004,-000.005,+000.595,38.7,03.3,0.55*63
01-11-17_04,14,09PM $VNINS,317667.494783,1973,0085,+035.486,+004.196,-000.880,+34.61265913,-118.07304562,+00744.318,+000.021,+000.005,+000.647,38.2,03.2,0.58*6D
01-11-17_04,14,09PM $VNINS,317667.694783,1973,0085,+035.494,+004.200,-000.880,+34.61265880,-118.07304613,+00744.238,-000.032,-000.061,+000.688,37.5,03.1,0.61*6F
01-11-17_04,14,09PM $VNINS,317667.894783,1973,0085,+035.505,+004.201,-000.879,+34.61265870,-118.07304591,+00744.160,-000.049,-000.026,+000.724,36.9,03.0,0.63*61
01-11-17_04,14,10PM $VNINS,317668.094783,1973,0085,+035.505,+004.201,-000.875,+34.61265891,-118.07304579,+00744.063,-000.017,-000.006,+000.767,36.4,02.9,0.63*6A
01-11-17_04,14,10PM $VNINS,317668.294784,1973,0085,+035.505,+004.200,-000.875,+34.61265901,-118.07304591,+00743.943,-000.005,-000.016,+000.818,36.0,02.9,0.65*6B
01-11-17_04,14,10PM $VNINS,317668.494784,1973,A085,+035.510,+004.201,-000.876,+34.61265930,-118.07304591,+00743.817,+000.032,-000.014,+000.867,35.8,02.8,0.65*1A
01-11-17_04,14,10PM $VNINS,317668.694784,1973,8085,+035.515,+004.202,-000.875,+34.61265898,-118.07304563,+00743.710,-000.015,+000.021,+000.907,35.2,02.8,0.66*6F
01-11-17_04,14,10PM $VNINS,317668.894784,1973,D085,+035.516,+004.203,-000.875,+34.61265886,-118.07304520,+00743.590,-000.033,+000.066,+000.949,34.8,02.7,0.66*14
I would need 14 separate figures, in each figure the x-axis is time (two instances) and the y-axis would be the average of the five instances of recorded data for that column.
Please include as many comments as possible so that I may understand everything aspect of the script, thank you!
4 Commenti
Walter Roberson
il 28 Ago 2018
Modificato: Walter Roberson
il 28 Ago 2018
I noticed that the pl.txt you attached is not in the same format as your original data. Your original data matched the format you posted including the $VNINS strings; the pl.txt does not have those strings.
The pl.txt you posted includes two columns that cannot be plotted, including the final column, which contains entries such as '0.55*6D' -- a floating point number followed by an asterisk followed by two hex digits.
Risposta accettata
Walter Roberson
il 28 Ago 2018
C = readtable('pl.txt');
hms = duration(C{:,1}, C{:,2}, C{:,3});
origcol = [4, 5, 7:width(C)-1];
Ctt = table2timetable(C(:,origcol), 'RowTimes', hms);
meanCtt = retime(Ctt, unique(hms), 'mean');
numcol = width(meanCtt);
x = meanCtt.Time;
for K = 1 : numcol
figure();
plot(x, meanCtt{:,K});
legend( sprintf('Column #%d', origcol(K)) );
end
0 Commenti
Più risposte (1)
Pierre845
il 27 Ago 2018
Hello,
First you need to work out how to transform your text data into a matrix; for that purpose use either csvread, dlmread or textscan with the right options (trial and error will make it, as the functions are easy to understand)
Then simply do your average for each column (mean function), and finally plot them with the function plot (if you call the function plot multiple times, use 'Hold On' to keep the figure display on).
Vedere anche
Categorie
Scopri di più su Dates and Time in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!