Bonjour à tous

Je viens vers vous afin de trouver une solution à mon problème.
J'ai un spectre de taille 3600x1 et mon but est de le débruiter, pour cela je suis en train de tenter de retrouver la forme du signal orignial mais pour ça j'ai besoin de générer une matrice polynomiale.
Je suis en fait en train de galérer pour trouver un moyen de créer une matrice de taille 3600x30 et de rang 30. Dans cette matrice se trouve à la i-ème colonne le polynôme de degrés i-1. Donc la 1ère colonne est un constante (ici posée à 1), la deuxième colonne est un polynôme de degrès 1 : x, la troisième un polynôme de degrès 2 : x^2, etc... Et chaque ligne de la i-ème colonne représente tout simplement la valeur de x_i élevée au ième degrès où x est la liste défini comme allant de 1 à 3600 par pas de 1.

Jusque là je n'ai pas eu trop de soucis je l'ai codé comme ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
poly_eye = zeros(taille(1),30);
poly_eye(:,1) = ones(3600,1);
 
for i=1:29
 
  poly = x.^i;
  poly_eye(:,i+1) = poly;
 
end
Mais le problème est le suivant : lorsque j'orthogonalise ma matrice je me retrouve avec une matrice de taille 3600x3 au lieu de 3600x30 car ma matrice générée est de rang 3.
D'une part je ne comprends pas pourquoi seulement 3 polynomes forment un sous-espace des autres polynomes et deuxièmement j'aimerai trouver un moyen de générer ce genre de matrice en ayant une taille 3600x30 de rang 30 et non de rang 3. Avez vous une idée?

Merci d'avance

Julien