plot different parts of vector
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Robin Strak
am 17 Mär. 2020
Kommentiert: Sriram Tadavarty
am 17 Mär. 2020
I´ve got a vector M(1x80) and would like to plot four different graphs (graph 1 equals values 1:20, graph 2 values 21:40, ...) and have a name of each of them in the legend (including a trendcurve):
I thougt of a loop like that:
for i = 1:20:80
plot(M3(i);
legend('Graph 1');
end
Can you tell me where the error is?
Thanks a lot for helping me!
0 Kommentare
Akzeptierte Antwort
Sriram Tadavarty
am 17 Mär. 2020
Bearbeitet: Sriram Tadavarty
am 17 Mär. 2020
Hi Robin,
The following code will provide what you are looking for
M3 = rand(1,80);
j = 1;
str = [];
for i = 1:20:80
hold on
plot(M3(i:19+i)); % Update this to have 20 values, which is fixed to 1 in your code
str = [str ["Graph " + num2str(j)]]; % To have different legend for each plot through string array
j = j+1;
end
legend(str)
Hope this helps.
Regards,
Sriram
4 Kommentare
Sriram Tadavarty
am 17 Mär. 2020
Hi Robin,
Please do accept the answer, if helped.
Here, col is the cell array and it need to be accessed through curly brackets {} rather than open bracket (k).
I am not sure what the variable time is.
Use col{k} instead of col(k), it solves the issue. Here is a partial code
col = {'g', 'y', 'c', 'm'};
for i = 1:20:80
plot(M_3(i:19+i), col{k});
str = [str ["Graph " + num2str(j)]];
c_rms = polyfit(1:20,M_3(i:19+i),1);
y_est = polyval(c_rms,1:20);
hold on
str = [str ["Polyfit " + num2str(j)]];
plot(y_est, col{k}, 'LineWidth',2)
j = j+1;
k = k+1;
end
legend(str)
This should provide some insights of how to solve this. I suggest you to start a new question, if there is any other problem.
Thanking you
Regards,
Sriram
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots 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!