Распространенный способ генерации конечных геометрических рядов в MATLAB - PullRequest
7 голосов
/ 10 июня 2011

Предположим, у меня есть какое-то число a, и я хочу получить вектор [ 1 , a , a^2 , ... , a^N ].Я использую [ 1 , cumprod( a * ones( 1 , N - 1 ) ) ] код.Каков наилучший (и вероятно эффективный) способ сделать это?

Ответы [ 2 ]

13 голосов
/ 10 июня 2011

А как же a.^[0:N]?

2 голосов
/ 10 июня 2011

Ответ ThibThib абсолютно верен, но он не очень легко обобщается, если a происходит с вектором.Итак, в качестве отправной точки:

> a= 2
a =  2
> n= 3
n =  3
> a.^[0: n]
ans =
   1   2   4   8

Теперь вы также можете использовать встроенную функцию vander (хотя порядок другой, но это легко исправить при необходимости), чтобы произвести:

> vander(a, n+ 1)
ans =
   8   4   2   1

И с вектором, оцененным a:

> a= [2; 3; 4];
> vander(a, n+ 1)
ans =
   8    4    2    1
  27    9    3    1
  64   16    4    1
...