MATLAB中生成有限几何级数的常用方法

MATLAB中生成有限几何级数的常用方法,matlab,series,Matlab,Series,假设我有一些数字a,我想得到向量[1,a,a^2,…,a^N]。我使用[1,cumprod(a*ones(1,N-1))]代码。什么是做这件事的最好的(可能也是最有效的)方法?关于a.^[0:N]?ThibThib的答案绝对正确,但如果a发生在向量上,它就不容易推广。因此,作为一个起点: > a= 2 a = 2 > n= 3 n = 3 > a.^[0: n] ans = 1 2 4 8 现在,您还可以利用内置函数vander(虽然顺序不同,但如果需要

假设我有一些数字
a
,我想得到向量
[1,a,a^2,…,a^N]
。我使用
[1,cumprod(a*ones(1,N-1))]
代码。什么是做这件事的最好的(可能也是最有效的)方法?

关于
a.^[0:N]

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

我担心它需要O(N^2)个产品,而cumprod只需要O(N)个产品,这是最紧凑的产品way@UncleAli:尝试分析这两种方法。但是是的,它肯定会慢一些。@Jacob:我的路快了大约两倍。尽管如此,它还是可以接受的,因为可读性大大提高。谢谢。@UncleAli:有几件事需要注意。。。1) 我不希望
a.^(0:N)
具有O(N^2)依赖性,可能更像O(NlogN),因为我想象幂运算是用。2) 当对
a
使用浮点值时,如果两种不同方法的结果*不完全相同,不要太措手不及。由于它们使用两种不同的底层算法,具有不同的数学运算顺序,您可能会看到浮点精度顺序上的微小差异。