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 Kommentare

the cyclist
the cyclist am 3 Mai 2016
Bearbeitet: the cyclist am 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);

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

the cyclist
the cyclist am 3 Mai 2016

0 Stimmen

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

2 Kommentare

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 am 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)])

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by