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

113 Ansichten (letzte 30 Tage)
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 Kommentar
Tom
Tom am 4 Apr. 2013
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?

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

the cyclist
the cyclist am 4 Apr. 2013
k = 1:n;
y = a*gf.^(k-1);
or, even simpler
y = a*gf.^((1:n)-1);
  3 Kommentare
Ramm
Ramm am 13 Aug. 2018
Bearbeitet: Ramm am 13 Aug. 2018
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 am 13 Aug. 2018
Bearbeitet: Stephen23 am 13 Aug. 2018
@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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Carlos
Carlos am 4 Apr. 2013
>> 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 Kommentare
Stephen23
Stephen23 am 13 Aug. 2018
@Ramm: although that n usage is a bit dodgy, it also works.

Melden Sie sich an, um zu kommentieren.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by