Azzera filtri
Azzera filtri

Problem with my if else command

1 visualizzazione (ultimi 30 giorni)
Wei Kang Chang
Wei Kang Chang il 24 Mag 2019
Commentato: Luna il 29 Mag 2019
Hi all,
I have my code written as below, however it does not give me the plot that I want. Instead of using two equations according to the conditions. It gives me a graph using the else equation regardless of the value of x_15. Can anyone help me with this?
x_15=0:40:600;
if x_15<200
y_15=75*(b+500)/(a+50)*(cos(pi*x_15/200))+75*(b+500)/(a+50);
else
y_15=(exp(-x_15/150)).*(((7*(b+110)/(a+10))*(cos(pi*x_15/200)))+(7*(b+110)/(a+10)));
end
scatter(x_15,y_15);
title('S-Shaped Pipeline FEA Model');
xlabel('X position');
ylabel('Y Position');
Thank you.
Regards \
Wei Kang

Risposta accettata

Stephen23
Stephen23 il 24 Mag 2019
Modificato: Stephen23 il 24 Mag 2019
An IF statement is not appropriate (without a loop). The simple MATLAB way is to use indexing:
>> a = 1;
>> b = 1;
>> x_15 = 0:40:600;
>> idx = x_15<200; % INDEX!
>> y_15 = (exp(-x_15/150)).*(((7*(b+110)/(a+10))*(cos(pi*x_15/200)))+(7*(b+110)/(a+10)));
>> y_15(idx) = 75*(b+500)/(a+50)*(cos(pi*x_15(idx)/200))+75*(b+500)/(a+50);
% ^^^^^ ^^^^^ INDEXING!
And checking:
>> plot(x_15,y_15)
untitled.png

Più risposte (0)

Categorie

Scopri di più su Get Started with MATLAB in Help Center e File Exchange

Tag

Prodotti


Release

R2014b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by