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)?
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

0 votes

If my speculation about what you meant it correct, then
k = cumprod(v)/v(1)

2 commentaires

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
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 Centre d'aide 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