MATLAB Answers

Johanne
0

How to make a nxm Vandermonde matrix?

Asked by Johanne
on 19 Sep 2019 at 14:22
Latest activity Edited by John D'Errico
on 19 Sep 2019 at 14:53
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.

  0 Comments

Sign in to comment.

1 Answer

Answer by John D'Errico
on 19 Sep 2019 at 14:52
Edited by John D'Errico
on 19 Sep 2019 at 14:53
 Accepted Answer

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 Comments

Sign in to comment.