How to avoid that loop

4 vues (au cours des 30 derniers jours)
Alberto Menichetti
Alberto Menichetti le 3 Mai 2016
Commenté : Steven Lord le 3 Mai 2016
k(1) = 1;
for i=2:size(k)
k(i) = k(i-1)*v(i)
end
v(i) is a scalar and it's different on every iteration How could I do that without using a loop?
  2 commentaires
the cyclist
the cyclist le 3 Mai 2016
Modifié(e) : the cyclist le 3 Mai 2016
As written, this loop will never be executed, because size(k) is 1, and
for i = 2:1
<stuff>
end
will have zero iterations.
Some coding mistake? Maybe you meant length(v)?
Alberto Menichetti
Alberto Menichetti le 3 Mai 2016
I'm sorry you're right
k = ones(size(v), 1);

Connectez-vous pour commenter.

Réponse acceptée

the cyclist
the cyclist le 3 Mai 2016
If my speculation about what you meant it correct, then
k = cumprod(v)/v(1)
  2 commentaires
Alberto Menichetti
Alberto Menichetti le 3 Mai 2016
I think I didn't explain my problem very well:
k(1) = 1
I want
k(i) = k(i-1)*v(i)
for every i>1
Steven Lord
Steven Lord le 3 Mai 2016
No, we understand you. Another approach that doesn't involve division:
v = randperm(8) % Sample data for demonstration purposes
k = cumprod([1 v(2:end)])

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by