How do I create a vector with a multiply sequence?

Can I replace this loop?
vector(1)=100;
for i=2:10
vector(i)=vector(i-1)*0.7;
end
%%vector(10) will be 4.0354
I want to write the sequence , something like this:
vector=100:*0.7:4.0354
possible?

3 comentarios

Sean de Wolski
Sean de Wolski el 12 de Abr. de 2012
+1, this is a well written question that can evoke a lot of good solutions with an opportunity for us to all learn.
Jan
Jan el 12 de Abr. de 2012
Sean, you are right. +1
Sean de Wolski
Sean de Wolski el 12 de Abr. de 2012
How would you do this with filter?

Iniciar sesión para comentar.

Respuestas (6)

Andrei Bobrov
Andrei Bobrov el 12 de Abr. de 2012
vector = [1 cumprod(ones(1,9)*.7)]*100;
more variant
o10 = ones(10);
vector = 100*prod(o10 - .3*triu(o10,1));
Jan
Jan el 12 de Abr. de 2012
vector = repmat(0.7, 1, 10);
vector(1) = 100;
vector = cumprod(vector);
Or as one-liner:
vector = cumprod([100, repmat(0.7, 1, 9)]);
Jan
Jan el 12 de Abr. de 2012
An of course:
vector = [100, 70, 49, 34.3, 24.01, 16.807, 11.7649, ...
8.23543, 5.764801, 4.0353607];
This is fast, but not very flexible. :-)
Honglei Chen
Honglei Chen el 12 de Abr. de 2012
Just for fun
filter(1,[1 -0.7],[100 0 0 0 0 0 0 0 0 0])
Honglei Chen
Honglei Chen el 12 de Abr. de 2012
Another one
flipud(100*diag(vander(repmat(0.7,1,10))))

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 12 de Abr. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by