How does the cycle for , if work?

12 visualizzazioni (ultimi 30 giorni)
massi
massi il 13 Mar 2015
Commentato: massi il 13 Mar 2015
Dear All, I have n=[0:1:10] and the column K=[-2,5,-5]. I would like to generate a cycle in which each time It takes an item of n and adds it to K, every time It checks if the sum(K) is zero: if it is zero it must write the value of "n".
I wrote this but it doesn't work:
for n=0:1:10
K=[-2,5,-5];
Z=K+n;
S=sum(Z);
if S==0
n
end
end
Could you help me, please.
Thanks in advance
Best regards
Massimo

Risposte (2)

Adam
Adam il 13 Mar 2015
K=[-2,5,-5];
n = 0:10'
res = bsxfun( @plus, K, n' );
resSum = sum( res, 2 );
zeroSums = resSum == 0;
n( zeroSums )
should give you the result you want without needing a loop, if I understand your requirements correctly.

James Tursa
James Tursa il 13 Mar 2015
The reason it doesn't produce any output is because the sum is never 0. E.g., print out S each iteration to see what is going on:
for n=0:1:10
K=[-2,5,-5];
Z=K+n;
S=sum(Z);
disp(S);
if S==0
n
end
end
If you think the sum should have been 0 at some point, then you need to re-examine your algorithm and the problem you are solving.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by