How to avoid that loop

4 Ansichten (letzte 30 Tage)
Alberto Menichetti
Alberto Menichetti am 3 Mai 2016
Kommentiert: Steven Lord am 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 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)?
Alberto Menichetti
Alberto Menichetti am 3 Mai 2016
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
If my speculation about what you meant it correct, then
k = cumprod(v)/v(1)
  2 Kommentare
Alberto Menichetti
Alberto Menichetti am 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 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 Help 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