How do I create a vector of n exponentially increasing values from a to b?

98 ビュー (過去 30 日間)
Tom
Tom 2013 年 4 月 4 日
編集済み: Stephen23 2018 年 8 月 13 日
I know how to calculate the growth factor, but not how to turn it all into a vector. Here's the start of my code: -
n = 4
a = 1
b = 10
gf = (b/a)^(1/n - 1)
  1 件のコメント
Tom
Tom 2013 年 4 月 4 日
I think I've done it with a for loop: -
n = 4
a = 1
b = 10
gf = (b/a)^(1/(n - 1))
for k = 1:n
y(k) = a*gf^(k-1);
end
Does anyone know how I could do it using a non-for loop method?

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

採用された回答

the cyclist
the cyclist 2013 年 4 月 4 日
k = 1:n;
y = a*gf.^(k-1);
or, even simpler
y = a*gf.^((1:n)-1);
  3 件のコメント
Ramm
Ramm 2018 年 8 月 13 日
編集済み: Ramm 2018 年 8 月 13 日
Is this a specific module that I need to add? In my case it doesn't work:
n = 4;
a = 1;
b = 10;
K>>
K>> k = 1:n;
K>> y = a*gf.^(k-1);
Error using .^ (line 1000)
Sizes of x, y don't match.
K>> y = a*gf.^((1:n)-1);
Error using .^ (line 1000)
Sizes of x, y don't match.
Stephen23
Stephen23 2018 年 8 月 13 日
編集済み: Stephen23 2018 年 8 月 13 日
@Ramm: That error message is telling you what the problem is. It does not mention that you need any "specific module". It shows that your gf is non-scalar and is not the same size as k, thus you will get this error. The code in this answer works perfectly, as long as you define a scalar growth factor (exactly as the question shows):
>> n = 4;
>> a = 1;
>> b = 10;
>> gf = (b/a)^(1/n-1)
gf = 0.17783
>> k = 1:n;
>> y = a*gf.^(k-1)
y =
1.0000000 0.1778279 0.0316228 0.0056234

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

その他の回答 (1 件)

Carlos
Carlos 2013 年 4 月 4 日
>> y=zeros(4,1);
>> n=1:1:4;
>> y(1:4)= a*gf.^(n(1:4)-1);
>> y
y =
1.0000
2.1544
4.6416
10.0000
  3 件のコメント
Ramm
Ramm 2018 年 8 月 13 日
This doesn't work either.
Stephen23
Stephen23 2018 年 8 月 13 日
@Ramm: although that n usage is a bit dodgy, it also works.

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

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by