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 件のコメント
Sean de Wolski
2012 年 4 月 12 日
+1, this is a well written question that can evoke a lot of good solutions with an opportunity for us to all learn.
Jan
2012 年 4 月 12 日
Sean, you are right. +1
Sean de Wolski
2012 年 4 月 12 日
How would you do this with filter?
回答 (6 件)
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
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
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
2012 年 4 月 12 日
Another one
flipud(100*diag(vander(repmat(0.7,1,10))))
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!