Why does the second matrix start with zeros?

1 view (last 30 days)
for i=-10:10
if i<0
a(i+11)=i;
if i>0
b(i+10)=i;
end
end
end
Out of curiosity, why, if I print b, would the matrix start with 10 zeros?
  1 Comment
Adam Danz
Adam Danz on 31 Jul 2020
"Out of curiosity, why, if I print b, would the matrix start with 10 zeros?"
This code should never reach 'b' which would leave 'b' undefined. The i>0 condition is nested within the i<0 condition. So if i<0, than i will never be greater than 0.
Here is your code with correct formatting.
for i=-10:10
if i<0
a(i+11)=i;
if i>0
b(i+10)=i;
end
end
end
My guess is that one of your 'end' lines is misplaced.
Even if you fix it, you'd still have problems getting what you want for reasons described by madhan ravi.

Sign in to comment.

Accepted Answer

madhan ravi
madhan ravi on 31 Jul 2020
Edited: madhan ravi on 31 Jul 2020
MATLAB assigns zero to the previous indices, for better understanding:
clear a
a(11) = 1; % now you will see elements from 1-10 are filled with zeros, if a doesn’t exist already in the workspace
Perhaps what you want is:
ii = -10 : 10;
a = ii(ii < 0)
b = ii(ii >= 0)

More Answers (0)

Categories

Find more on Loops and Conditional Statements 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!