How do I create a vector with a multiply sequence?

3 次查看(过去 30 天)
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?

回答(6 个)

Sean de Wolski
Sean de Wolski 2012-4-12
vector = 0.7.^(0:9)*100
And golf:
v=.7.^(0:9)*100

Andrei Bobrov
Andrei Bobrov 2012-4-12
vector = [1 cumprod(ones(1,9)*.7)]*100;
more variant
o10 = ones(10);
vector = 100*prod(o10 - .3*triu(o10,1));

Jan
Jan 2012-4-12
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 2012-4-12
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 2012-4-12
Just for fun
filter(1,[1 -0.7],[100 0 0 0 0 0 0 0 0 0])

Honglei Chen
Honglei Chen 2012-4-12
Another one
flipud(100*diag(vander(repmat(0.7,1,10))))

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by