How to change a parameter during a plot?
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I would like to plot a function but change a value part way through the plot, specifically in the code below, for values of (x<M) I would like to set R = RL and for values of (x>M) I would like to set R = RR. Any help appreciated. Thanks
x = 0:0.01:2;
M = 1;
R = 2;
LR = 0.25;
RL = (0.5 / LR) * R;
RR = (0.5 / (1 - LR)) * R;
y = exp(-(4* * *R* * .^2*(log(2))*(M - x).^2)/(M.^2));
plot(x,y)
grid on
0 comentarios
Respuesta aceptada
Paul
el 16 de Mzo. de 2014
x = 0:0.01:2;
M = 1;
R = 2;
LR = 0.25;
RL = (0.5 / LR) * R;
RR = (0.5 / (1 - LR)) * R;
xL = x(x<M);
xR = x(x>=M);
y(x<M) = exp(-(4*RL.^2.*(log(2)).*(M - xL).^2)/(M.^2));
y(x>=M) = exp(-(4*RR.^2.*(log(2)).*(M - xR).^2)/(M.^2));
plot(x,y)
grid on
This is based logical indices, see: http://www.mathworks.com/company/newsletters/articles/matrix-indexing-in-matlab.html
I also removed all the * in your function, not sure if there are supposed to be constants there or something.
0 comentarios
Más respuestas (1)
Eliot
el 16 de Mzo. de 2014
1 comentario
Paul
el 16 de Mzo. de 2014
Editada: Paul
el 16 de Mzo. de 2014
There's also an easier method. You can make R a vector with the corresponding value for x<M and x>=M:
x = 0:0.01:2;
M = 1;
R = 2;
LR = 0.25;
RL = (0.5 / LR) * R;
RR = (0.5 / (1 - LR)) * R;
Rc(x<M) = RL;
Rc(x>=M) = RR;
y = exp(-(4.*Rc.^2.*(log(2)).*(M - x).^2)/(M.^2));
figure;
plot(x,y)
grid on
It's important to not forget to use the . for the factors involving Rc too.
Ver también
Categorías
Más información sobre Logical 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!