MATLAB MATLAB giving 0 value for if/then statement

  • Thread starter Thread starter bakin
  • Start date Start date
  • Tags Tags
    Matlab Value
AI Thread Summary
The discussion revolves around troubleshooting an if/then statement in a MATLAB code that processes applied loads and their positions. The user initially encounters an issue where the output for Z(1) is zero, despite the expectation that it should reflect the input values based on the condition of whether the position D exceeds a threshold (a). The problem is identified as stemming from the variable 'i' being undefined outside the for loop, leading to incorrect indexing. A solution is proposed to embed the if/then statement within another for loop, ensuring that the condition checks are correctly applied for each load. This adjustment resolves the issue, allowing the code to function as intended.
bakin
Messages
55
Reaction score
0
Hi again! Working with an if/then statement and running into trouble. Here's my code.

Code:
a=2;
N = input('Enter the number of applied loads:');
for i=1:N
    L(i)=input('Enter the force of the applied load in kN:');
    D(i)=input('Enter the position of the applied load in meters:');
end
if D(i) > a
    Z(i)=L(i)*-1
else Z(i)=L(i)
end
And here is the result:
Code:
Enter the number of applied loads:2
Enter the force of the applied load in kN:1
Enter the position of the applied load in meters:1
Enter the force of the applied load in kN:3
Enter the position of the applied load in meters:3

Z =

     0    -3

>> D

D =

     1     3

>> L

L =

     1     3

Why is Z(1) coming out zero? With my if/then statement, what I want is if D>a, then L= -1*L. If not, it should just stay the same, not return a zero.

Any ideas? :confused:edit: Interesting...
Code:
>> projectdebug
Enter the number of applied loads:10
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5
Enter the force of the applied load in kN:5
Enter the position of the applied load in meters:5

Z =

     0     0     0     0     0     0     0     0     0    -5

What's going on?! :cry:
 
Last edited:
Physics news on Phys.org
I think you want to embed this code in a for loop as well:
Code:
if D(i) > a
    Z(i)=L(i)*-1
else Z(i)=L(i)
end

After your first loop exits, what's the value in i? I don't know, and your problem is probably related to i not being defined outside your loop. Alternatively, i could be the first value that caused it to exit the first for loop, which is probably not what you intended.
 
That's it! :smile: After the loop, it put i=2, which probably caused problems. I just threw the same if/then statement in another for loop, with "for i=1:N", and it works. Thanks a bunch, Mark! :wink:
 

Similar threads

Replies
4
Views
1K
Replies
4
Views
4K
Replies
5
Views
1K
Replies
2
Views
3K
Replies
2
Views
5K
Replies
10
Views
3K
Back
Top