Does it have a statement for replacing repeated multiple if and elseif statements?
Show older comments
I have a code:
a = 0:0.001:1;
b = 0.03*sin(a);
for i = 1:length(a),
d = 0;
if b(i) <= 0.02;
if 0 < b(i) <= 0.1*pi/180
c = 0:0.1*pi/180:10*pi/180;
elseif 0.1*pi/180 < b(i) <= 0.2*pi/180
c = 0.1*pi/180:0.1*pi/180:10*pi/180;
elseif 0.2*pi/180 < b(i) <= 0.3*pi/180
c = 0.2*pi/180:0.1*pi/180:10*pi/180;
elseif 0.3*pi/180 < b(i) <= 0.4*pi/180
c = 0.3*pi/180:0.1*pi/180:10*pi/180;
elseif 0.4*pi/180 < b(i) <= 0.5*pi/180
c = 0.4*pi/180:0.1*pi/180:10*pi/180;
elseif 0.5*pi/180 < b(i) <= 0.6*pi/180
c = 0.5*pi/180:0.1*pi/180:10*pi/180;
elseif 0.6*pi/180 < b(i) <= 0.7*pi/180
c = 0.6*pi/180:0.1*pi/180:10*pi/180;
elseif 0.7*pi/180 < b(i) <= 0.8*pi/180
c = 0.7*pi/180:0.1*pi/180:10*pi/180;
elseif 0.8*pi/180 < b(i) <= 0.9*pi/180
c = 0.8*pi/180:0.1*pi/180:10*pi/180;
elseif 0.9*pi/180 < b(i) <= 1*pi/180
c = 0.9*pi/180:0.1*pi/180:10*pi/180;
end
end
for k = 1:length(c),
d = d + b(1,i)*c(1,k);
end
e(1,i) = d;
end
I wonder if there is any way to get the same result by replacing the repeated elseif statement.
Thank you!
3 Comments
What exactly is C supposed to look like, and why are you treating B as if it were an angle? Should that be A instead of B?
You're testing B in increments of 0.00175 from 0 to 0.0175 -- but b spans [0 0.2524]. That seems unintended.
While the above code is improper syntax and wouldn't work, an interpretation of the intent suggests that for each binned element of B, you're trying to create a new vector C of variable length. How many C vectors do you actually need?
Jeah MK
on 28 Feb 2022
Note that your conditional statements are not robust. Consider the following.
0 < 5 < 6
0 < -5 < 6
Both statements evaluate as true, though you likely intend for the 2nd one to be false. I would be more explicit with how I write these.
0 < -5 && -5 < 6
Accepted Answer
More Answers (1)
Walter Roberson
on 28 Feb 2022
Use discretize() to determine the range of c values that you want to use.
Or... just take
round((b*180/pi),1)*pi/180
as the starting point for c.
Categories
Find more on Naming Conventions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!