Two different ways of using iterations

1 visualización (últimos 30 días)
Michael Peyron
Michael Peyron el 29 de Jun. de 2020
Comentada: Michael Peyron el 29 de Jun. de 2020
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

Respuesta aceptada

dipak nigam
dipak nigam el 29 de Jun. de 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.
  1 comentario
Michael Peyron
Michael Peyron el 29 de Jun. de 2020
Yes, I was able to find it too.
Thanks anyway!

Iniciar sesión para comentar.

Más respuestas (1)

KSSV
KSSV el 29 de Jun. de 2020
Editada: KSSV el 29 de Jun. de 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
  5 comentarios
KSSV
KSSV el 29 de Jun. de 2020
The basic building block is a loop. But in MATLAB you can avoid loop most of the times....remember the full form of MATLAB.
Michael Peyron
Michael Peyron el 29 de Jun. de 2020
Thanks! I added your code to my notes!

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by