MATLAB Answers

# Unable to perform assignment because the left and right sides have a different number of elements

22 views (last 30 days)
Nathan Brannan on 4 Mar 2021
Commented: Nathan Brannan on 4 Mar 2021
I understand the concept behind the error, but not so much the reason as it applies to the code. This is a homework problem that I was given.
If there are other issues with this code, I would really appreciate any and all explanations!
t = (0:.2:50);
V = zeros(length(t));
for i=1:length(t)
if 0 <= t(i) <= 8
V(i) = 10*t.^2-5*t;
elseif 8 < t(i) <= 16
V(i) = 624-5*t;
elseif 16 < t(i) <= 26
V(i) = 36*t+12*(t-16)^2;
else t(i) > 26;
V(i) = 2136*exp(1)^(-0.1*(t-26));
end
end
plot(t,V) ##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

Walter Roberson on 4 Mar 2021
if 0 <= t(i) && t(i) <= 8
V(i) = 10*t(i).^2-5*t(i);
Also
else t(i) > 26;
That calculates whether t(i) is greater than 26, and then throws away the result of the test because of the semi-colon. Notice that you did not use elseif
##### 1 CommentShowHide None
Nathan Brannan on 4 Mar 2021
That seemed to work well. Thanks!

Sign in to comment.

### More Answers (1)

David Hill on 4 Mar 2021
t = (0:.2:50);
V = zeros(length(t));
for i=1:length(t)
if 0 <= t(i)&&t(i) <= 8
V(i) = 10*t(i)^2-5*t(i);
elseif 8 < t(i)&& t(i) <= 16
V(i) = 624-5*t(i);
elseif 16 < t(i)&&t(i) <= 26
V(i) = 36*t(i)+12*(t(i)-16)^2;
elseif t(i) > 26
V(i) = 2136*exp(1)^(-0.1*(t(i)-26));
end
end
plot(t,V)
##### 1 CommentShowHide None
Nathan Brannan on 4 Mar 2021
Thank you!

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!