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

1 vue (au cours des 30 derniers jours)
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

Réponses (3)

Walter Roberson
Walter Roberson le 22 Avr 2019
Modifié(e) : Walter Roberson le 22 Avr 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 le 22 Avr 2019
Take a look at the vander function.

Terry Poole
Terry Poole le 22 Avr 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

Catégories

En savoir plus sur Geometric Transformation and Image Registration dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by