Making IF conditional sentance.

Hi guys. I want to make some if conditional sentance.
I can't get a result, because of 'f'.
-----------------------------------------------------
f=[0:1:20]
f1=10;
E=20;
B0=15;
if (0<f && f<f1);
P = sqrt(E)/(2*B0);
elseif (f1<f && f<2*B0-f1);
P = (sqrt(E)/(4*B0))*(1+cos((pi*(abs(f)-f1))/(2*(B0-f1))));
else
P = 0
end
plot(f,2*B0*P/sqrt(E));
-----------------------------------------------------------------
Matlab says that && can't be used with doubled value..
Please help.

 Accepted Answer

Stephen23
Stephen23 on 2 Apr 2015
Edited: Stephen23 on 2 Apr 2015
Learn how to write vectorized code in MATLAB: vectorized code is faster, neater and less buggy. Firstly we define the parameters:
>> f = 0:20;
>> f1 = 10;
>> E = 20;
>> B0 = 15;
Then a vectorized solution can be achieved by directly using logical indexing:
>> P = (sqrt(E)/(4*B0)) * (1+cos((pi*(abs(f)-f1)) / (2*(B0-f1))));
>> P(0<f & f<f1) = sqrt(E)/(2*B0);
>> P(f==0 | f==f1) = 0;
>> P(:)
ans =
0
0.14907
0.14907
0.14907
0.14907
0.14907
0.14907
0.14907
0.14907
0.14907
0
0.14542
0.13484
0.11835
0.097568
0.074536
0.051503
0.030725
0.014235
0.003648
0

1 Comment

It really helpful. Thanks. I never thought about like this.
Now I can make a really nice signal. Thank you

Sign in to comment.

More Answers (1)

James Tursa
James Tursa on 2 Apr 2015
Edited: James Tursa on 2 Apr 2015
f is a vector, so the expression f<f1 is also a vector. And when you try to use this vector with the && operator you get the error message.
Either vectorize all of this to generate your P if you are up to the task, or wrap it in a loop to generate your P values using only one element of f in each iteration to generate one element of P.

1 Comment

Yes. I thought it is quite difficult to solve. But there is a solution form 'Stephen Codeldick' under below. Thanks for your mention. :D

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Asked:

on 2 Apr 2015

Commented:

on 2 Apr 2015

Community Treasure Hunt

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

Start Hunting!