Matlab plots only one point
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
positron96
am 30 Mär. 2017
Kommentiert: Guillaume
am 30 Mär. 2017
I want to plot the function Y = X^m/(5^m + X^m) on a Y vs. X graph for different values of m, and I used the code below but MATLAB plots only one point. Can someone help me?
for m = 1:10
X = linspace(1, 100, 1001);
Y = (X.^m) / (5^m + X.^m);
plot(X, Y);
end
Thanks!
0 Kommentare
Akzeptierte Antwort
Guillaume
am 30 Mär. 2017
Bearbeitet: Guillaume
am 30 Mär. 2017
You're performing matrix division instead of elementwise division. Use ./ instead of / in your Y calculation.
Once that's fixed, you'll get one plot and only one, because by default plot erases previous plots. Use hold on to prevent that.
Also note that since X doesn't change with m, it'll be faster to only calculate it once, outside the loop. So:
figure;
hold on;
X = linspace(1, 100, 1001);
for m = 1:10
Y = (X.^m) ./ (5^m + X.^m);
plot(X, Y);
end
edit: also note that you can avoid the loop entirely (and the need for hold on):
figure;
X = linspace(1, 100, 1001);
m = (1:10)'; %as a vector in a different direction than X
Y = (X.^m) ./ (5.^m + X.^m); %requires R2016b or later
plot(X, Y);
3 Kommentare
Guillaume
am 30 Mär. 2017
As the comment says, it's to ensure that m is in a different direction than X. It makes m as a column vector, whereas X is a row vector.
That's what makes the next line work.
Weitere Antworten (1)
KSSV
am 30 Mär. 2017
X = linspace(1, 100, 1001) ;
figure
hold on
for m = 1:10
Y = (X.^m). / (5^m + X.^m);
plot(X, Y);
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Line 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!