The if else statement does not read the other conditions

Hello. I have this code. I attached the matlab code and the excel file. This includes an excel file. The value for Wt1 in the cell F5 and F6 should be considered using the first two conditions in the if statement, yet it read the else statement instead

2 Comments

Why are there ` ` around your assignment to b1 ?
Sorry, It's just a typo error. But in may matlab code, there is no ` `

Sign in to comment.

 Accepted Answer

"based on the assigned value of D1 and Wl1, it should be applied in the first condition of the if statement"
Huh? D1 is 3 and Wl1 is 1.4, and 3 < 1.4 is false, so the last statement is the correct one to use.

6 Comments

I'll edit my question. Well basically, this contains and excel file.
I've attached the matlab code and the excel file. Yet, the value of the Wt1 is not in accordance to the if statement.
Your D1 is a 30 x 1 vector. Some of the entries are < Wl1 and some of them are greater than Wl1.
Replace your if statement chain with
mask = D1 <= Wl1
Wt1(mask) = interp1(x1,a1,N1(mask),'linear','extrap')
Wt1(~mask) = interp1(x1,b1,N1(~mask),'linear','extrap')
I have another question. If it is fine.
With this code and excel file again. On the column of cohesion, again the if else statement does not work. Because if the if else statement works, the value for K5:K7 should be zero, yet it does not return to a value of zero.
Change
[strings] = xlsread('Terzaghi.xlsx','Sheet1','E5:E34'); %%Soil classification
to
[~,strings] = xlsread('Terzaghi.xlsx','Sheet1','E5:E34'); %%Soil classification
Change
if isequal(S1,'GS')
coh1 = 0
elseif isequal(S1,'S')
coh1 = 0
elseif isequal(S1,'G')
coh1 = 0
else
coh1 = 0.06 .* 101.325 .* N1
end
to
mask = ismember(S1, {'GS', 'S', 'G'});
coh1(mask) = 0;
coh1(~masK) = 0.06 .* 101.325 .* N1(~mask);
Wow. Thank you so much. This really helped a lot.

Sign in to comment.

More Answers (1)

D1 = 3
Wl1 = 1.4
N1 = 15
%%interpolation for unit weight
if D1 < Wl1
Is 3 less than 1.4? No, so we do not execute the body of the if statement. We continue on to the elseif statement.
Wt1 = interp1(x1,a1,N1,'linear','extrap')
elseif D1 == Wl1
Is 3 exactly equal to 1.4? No, so we do not execute the body of the elseif statement. We continue on to the else statement.
Wt1 = interp1(x1,a1,N1,'linear','extrap')
else
We execute the body of the else statement.
Wt1 = interp1(x1,b1,N1,'linear','extrap')
end
MATLAB is behaving correctly based on what you showed us.

1 Comment

Sorry. I edited the question. I also attached the matlab code with the corresponding excel file.

Sign in to comment.

Categories

Products

Release

R2020b

Community Treasure Hunt

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

Start Hunting!