vandermonde矩阵matlab混淆

use*_*468 1 matlab interpolation

我正在尝试使用matlab 构建vandermonde矩阵.

我的输入向量是

t = [ 1 2 3 4 ]'
Run Code Online (Sandbox Code Playgroud)

我使用vander函数的输出是:

ans =

 1     1     1     1
 8     4     2     1
27     9     3     1
64    16     4     1
Run Code Online (Sandbox Code Playgroud)

现在,如果我没有弄错的话,那个向量的范德蒙矩阵应该是:

1 1 1 1
1 2 4 8
1 3 9 27
1 4 16 64
Run Code Online (Sandbox Code Playgroud)

现在我才意识到我可以使用以下内容实现我想要的结果:

>> fliplr(vander(t))

 ans =

 1     1     1     1
 1     2     4     8
 1     3     9    27
 1     4    16    64
Run Code Online (Sandbox Code Playgroud)

谢谢.

Heb*_*odo 11

维基百科和Mathworld同意你的看法.但是,MATLAB文档说:

A = vander(v)返回Vandermonde矩阵,其列是向量v的幂,即A(i,j)= v(i)^(nj),其中n = length(v).

我不知道为什么Mathworks这样做了.您可以使用它fliplr来达到预期的效果.

  • TMW之所以这样做,是因为他们希望系数的阶数在polyfit和polyval等工具中逐渐减少.这使得他们所有的工具都是一致的,使用多项式和分段多项式(样条,pchip等)为什么有人按照这个顺序首先做的很有意思,但是人们可能需要直接要求Cleve或Carl来获取他们的输入,如他们肯定是罪魁祸首.我想知道它是否可能与解决中完成的列排列有关,但这只是一个疯狂的猜测. (5认同)