3 views (last 30 days)

I have decided to do some repetition in Matlab during this summer so I'm doing a lot of assignments again that I have already finished a couple of months ago. Though, I stumble upon a certain assignment and my solution would be:

load tal

v_stor=[];

v_liten=[];

v_mellan=[];

for i=1:length(V)

if V(i)>=10

v_stor = v_stor + V(i);

elseif V(i)<=-10

v_liten = v_liten + V(i);

else

v_mellan = v_mellan + V(i);

end

end

v_stor

v_mellan

v_liten

I think it's pretty straightfoward what I want my code to do. This gave me empty vectors and I was confused why, so I checked my earlier solution:

load tal

t = 0;

v_stor = [];

v_mellan = [];

v_liten = [];

for i= 1:length(V)

if V(t+1)>= 10

v_stor=[v_stor V(t+1)];

elseif V(t+1)<=-10

v_liten = [v_liten V(t+1)];

else

v_mellan=[v_mellan V(t+1)];

end

t=t+1;

end

v_stor

v_mellan

v_liten

So my question is, why is my second solution wrong and how come, in my earlier solution, that I used V(t+1)? It looks the same to me.

Edit: Vector V is of size 1000x1

dipak nigam
on 29 Jun 2020

load tal

v_stor=[];

v_liten=[];

v_mellan=[];

for i=1:length(V)

if V(i)>=10

v_stor = [v_stor V(i)];

elseif V(i)<=-10

v_liten = [v_liten V(i)];

else

v_mellan = [v_mellan V(i)];

end

end

v_stor

v_mellan

v_liten

You were trying to add values to a vector by using '+' operator. You need to change your code like above to get the desired result.

KSSV
on 29 Jun 2020

Edited: KSSV
on 29 Jun 2020

In the first case, you are not saving the result. Check the below.

load tal

v_stor=zeros(1,length(V));

v_liten=zeros(1,length(V));

v_mellan=zeros(1,length(V));

for i=1:length(V)

if V(i)>=10

v_stor(i) = V(i);

elseif V(i)<=-10

v_liten(i) = V(i);

else

v_mellan(i) = V(i);

end

end

v_stor

v_mellan

v_liten

KSSV
on 29 Jun 2020

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.