Matlab plots only one point
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
positron96
el 30 de Mzo. de 2017
Comentada: Guillaume
el 30 de Mzo. de 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 comentarios
Respuesta aceptada
Guillaume
el 30 de Mzo. de 2017
Editada: Guillaume
el 30 de Mzo. de 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 comentarios
Guillaume
el 30 de Mzo. de 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.
Más respuestas (1)
KSSV
el 30 de Mzo. de 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 comentarios
Ver también
Categorías
Más información sobre Line Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!