How do I create a vector with a multiply sequence?

10 ビュー (過去 30 日間)
marilia15
marilia15 2012 年 4 月 12 日
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 件のコメント
Jan
Jan 2012 年 4 月 12 日
Sean, you are right. +1
Sean de Wolski
Sean de Wolski 2012 年 4 月 12 日
How would you do this with filter?

サインインしてコメントする。

回答 (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 Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by