How to make a nxm Vandermonde matrix?

17 次查看(过去 30 天)
How to make a mxn Vandermonde matrix?
n = 30;
start = -2;
stop = 2;
x = linspace(start,stop,n);
eps = 1;
rng(1);
r = rand(1,n) * eps;
y = x.*(cos(r+0.5*x.^3)+sin(0.5*x.^3));
%plot(x,y,'o');
m = 3;
B = y';
b = B(1:m);
A = fliplr(vander(x(1:m)))
This makes it a 3x3 matrix, and I want a nx3 matrix.

采纳的回答

John D'Errico
John D'Errico 2019-9-19
编辑:John D'Errico 2019-9-19
A = x(:).^(2:-1:0);
That works as long as you are using MATLAB R2016b or later. Earlier releases would need to use bsxfun, or even repmat.
Note that in A, i used the convention that vander uses, having the higest order term first. This is somewhat standard in MATLAB, for example, with polyfit.
You used fliplr on the result of vander, so you have the constant term first in your example. Either way is acceptable, as long as you know what you are doing.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrices and Arrays 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by