How to change a parameter during a plot?
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Paul
le 16 Mar 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 commentaires
Plus de réponses (1)
Eliot
le 16 Mar 2014
1 commentaire
Paul
le 16 Mar 2014
Modifié(e) : Paul
le 16 Mar 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.
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!