Error finding and graphing max values of data (Error using horzcat Dimensions of matrices being concatenated are not consistent. )
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Zaman Chini
am 6 Jul. 2018
Kommentiert: Zaman Chini
am 9 Jul. 2018
I'm trying to graph multiple sets of .csv data and display the max value for each data set on the graph itself. This has worked for all of my data sets except for one, which I keep getting the error "Error using horzcat Dimensions of matrices being concatenated are not consistent. The following is the code I've been using for two data sets, which I have attached to the post. TEK00055 is the one with errors and TEK00057 is the one without issues.
figure;
tmd=load('TEK00055.CSV');
x=5.+tmd(:,1);
y=5.*tmd(:,2);
plot(x,y)
xlabel('Time (s)')
ylabel('disp (mm)')
indexmax = find(max(y) == y);
xmax = x(indexmax);
ymax = y(indexmax);
strmax = ['Maximum = ',num2str(ymax)];
text(xmax,ymax,strmax,'HorizontalAlignment','right');
figure;
tmd=load('TEK00057.CSV');
x=5.+tmd(:,1);
y=5.*tmd(:,2);
plot(x,y)
xlabel('Time (s)')
ylabel('disp (mm)')
indexmax = find(max(y) == y);
xmax = x(indexmax);
ymax = y(indexmax);
strmax = ['Maximum = ',num2str(ymax)];
text(xmax,ymax,strmax,'HorizontalAlignment','right');
For the TEK00057 data, a graph comes out exactly how I want, with the maximum y-value being labelled, but the TEK00055 data is giving me errors. From looking through the excel files, i can't find any major differences between the two. Any help would be appreciated.
6 Kommentare
Geoff Hayes
am 9 Jul. 2018
Zaman - but what are the dimensions of ymax? Perhaps there are two or more idenitcal maximum values. And so the horizontal concatenation will fail when trying to create this string. If you are unsure, then put in some code like
strmax = ['Maximum = ',num2str(ymax(1))];
so that you always grab the first element of ymax.
Akzeptierte Antwort
Unai San Miguel
am 9 Jul. 2018
Your TEK00055.csv data has three data points with maximum y-values:
>> xmax
xmax =
6.8720
6.8730
6.9890
>> ymax
ymax =
0.2380
0.2380
0.2380
And then
>> num2str(ymax)
ans =
3×5 char array
'0.238'
'0.238'
'0.238'
is a 3x1 array, which cannot be horizontally concatenated with a single string 'Maximum = '.
You can use ['Maximum = ', str2num(ymax(1))] to display the first maximum occurrence, or any other solution.
1 Kommentar
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!