【发布时间】:2013-01-25 19:37:05
【问题描述】:
我正在尝试使用 matlab 构造一个vandermonde matrix。
我的输入向量是
t = [ 1 2 3 4 ]'
我使用vander function 的输出是:
ans =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
如果我没记错的话,所讨论的向量的范德蒙德矩阵应该是:
1 1 1 1
1 2 4 8
1 3 9 27
1 4 16 64
现在我才意识到我可以使用以下方法达到我想要的结果:
>> fliplr(vander(t))
ans =
1 1 1 1
1 2 4 8
1 3 9 27
1 4 16 64
谢谢。
【问题讨论】:
-
Vandermonde 矩阵中列的顺序只影响一件事 - 可能构建的结果模型中多项式系数的顺序。只要您知道结果是什么,以及如何解释它,就可以使用任何一种形式并感到高兴。
-
作为一般提示:看起来您可以使用
bsxfun(@power, t, 0:numel(t)-1);
(或者如果您愿意,bsxfun(@power, t, numel(t)-1:-1:0);
)来创建比vander
快一个数量级。 -
就地复制粘贴
vander
的内容更快。
标签: matlab interpolation