I need help building a dynamically evolving matrix based on a polynomial of unknown or user inputted size.

2 Ansichten (letzte 30 Tage)
I need help creating an array based on a polynomial of unknown length. Polyval and Poly fit cannot be used.
I need something that would do....
n=length(x);
X=[ones(n,1) x(:)];
% and after 1 iteration
X=[ones(n,1) x(:) x(:).^2];
%and after the 2nd iteration
X=[ones(n,1) x(:) x(:).^2 x(:).^3];
%and after the 3rd iteration
X=[ones(n,1) x(:) x(:).^2 x(:).^3 x(:).^4];
% and so on for n amount of iterations

Antworten (3)

Walter Roberson
Walter Roberson am 22 Apr. 2019
Bearbeitet: Walter Roberson am 22 Apr. 2019
xv = x(:);
yv = y(:);
X = [];
deg = 0;
while true
X = [X, xv.^deg];
coeffs = X \ yv;
residue = sum( (polyval(flipud(coeffs), xv) - yv).^2 );
if residue < tolerance
break;
end
end

Steven Lord
Steven Lord am 22 Apr. 2019
Take a look at the vander function.

Terry Poole
Terry Poole am 22 Apr. 2019
I finally got it last night by using
X=[ones(n,1) x(:)]; for i=2:n X[:,i-1]=X[:,i]+x.^(i+1); end

Kategorien

Mehr zu Geometric Transformation and Image Registration finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by