Execution of for loop and indexing of strucutres

Hi,
I am trying to run the following command inside a for loop:
if A(p,1)== B(:,1)
My question: Is every row of B is being compared to A in one running of the loop?
Regards, Waqas

5 comentarios

Not clear
James Tursa
James Tursa el 10 de Jul. de 2015
Can you show the loop indexing line also?
Waqas Syed
Waqas Syed el 10 de Jul. de 2015
Editada: Image Analyst el 10 de Jul. de 2015
Sorry for the vague question...Here is the code snippet.
n=0;
for p=1:length(MainWPR_mpc.branch)
for q=1:length(Reus.bus)
if MainWPR_mpc.branch(p,1)== Reus.bus(:,1)
if MainWPR_mpc.branch(p,2)== Reus.bus(:,1)
Reus.branch(n,:)= MainWPR_mpc.branch(p,:);
n=n+1;
end
end
end
end
Can you describe, in words, what this test is supposed to do?
if MainWPR_mpc.branch(p:1)== Reus.bus(:,1)
The (p:1) indexing definitely does not look right. Nor does the (p:2) indexing in the following line.
Waqas Syed
Waqas Syed el 10 de Jul. de 2015
Sorry, it was supposed to be a comma instead of a colon. Apologies for that.

Iniciar sesión para comentar.

 Respuesta aceptada

Image Analyst
Image Analyst el 10 de Jul. de 2015
MainWPR_mpc.branch(p,1) == Reus.bus(:,1)
produces a boolean vector, a list of true false values, not just a single one. So if you do that, you have to decide exactly what you're testing. What if you get 3 true and 5 false, like [1,0,0,1,1,0,0,0]? What do you want to do then? If you want ALL to be true, use all(). If you want to check if ANY of them is true, use any:
if all(MainWPR_mpc.branch(p,1)== Reus.bus(:,1))
if any(MainWPR_mpc.branch(p,1)== Reus.bus(:,1))
I don't know which way you want it.

Más respuestas (1)

James Tursa
James Tursa el 10 de Jul. de 2015
Editada: James Tursa el 10 de Jul. de 2015

0 votos

Is p the loop index?
A(p:1) could be empty or could be a scalar depending on what p is. B(:,1) is the first column of B. In an "if" test, the == would mean that all of the elemental results would need to be non-zero for the if-test to evaluate as true. I.e., all of the elements of the first B column would have to equal A(p:1) for the if-test to evaluate as true.
That being said, A(p:1) doesn't look right for what you probably intended and I would re-examine your code.

1 comentario

Waqas Syed
Waqas Syed el 10 de Jul. de 2015
Sorry, it was supposed to be a comma instead of a colon. Apologies for that.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 9 de Jul. de 2015

Respondida:

el 10 de Jul. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by