Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Signal
Signal Forum d'entraide sur le traitement du signal en MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 18h19   #1
tupierro
Invité de passage
 
Inscription : décembre 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : décembre 2012
Messages : 1
Points : 0
Points : 0
Par défaut Filtre formeur et Estimation de l'évolution du cours d'un actif financier (LS moindres carres)

Bonjour,
Dans le cadre d'un projet de traitement numérique du signal j'ai un échantillon X décomposé comme tel : X(n)=Y(n)+a+b*n
à l'aide des moindres carrés j'estime a et b puis j'ai mon signal d'erreur Y
Il a une moyenne proche de zéro (content ) mais une autocovariance très différente de celle d'un bruit blanc.(pas content )
Etape suivante je détermine un filtre formeur de type AR d'ordre 2 qui représente au mieux Y (je détermine mes coefficients de l'AR avec YuleWalker)
Et j'ai mon Y estimé par le filtre formeur. Quand je plot Y et Y estimé j'ai une sorte de décalage (cf photo zoom.png)
je suis certain à 100% du code de ma fonction yulewalker(testé et re-testé avec différente valeurs connues. Elle est jointe).
Avec un échantillon X lambda je me serais dit pourquoi pas mais celui utilisé est généré à partir d'un AR 2 donc ça devrait coller parfaitement....
Il doit y avoir un soucis dans mon filtre formeur mais je m'y arrache les cheveux depuis 2 semaines.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 X=importdata('datanew.xls');
 T=length(X)
 D1=ones(T,1);
 D2=[1:T]';
 D=[D1,D2];
 B=D'*D;
 teta=inv(B)*D'*X
 %Ploter le graphe de X et 
 %la droite dont les coefficients sont dans téta
 
 %ERREUR
 for i=1:T
    Y(i)=X(i)-teta(1)-teta(2)*i ;
 end
moy=mean(Y)
Y=Y-moy
m=sum(Y)/length(Y);
autocor=vautocov(Y)/var(Y);

% Genereration normale
a=yulewalker(autocor,2);
epsilon=randn(1,T+1);
epsilon=sqrt(a(1))*epsilon;

% Filtre formeur

Ychap(1)=-a(1)*Y(1);

N=length(a)
for n=2:T+1
    Ychap(n)=0;
    for p=2:N
        if p<=n
            Ychap(n)=Ychap(n)-a(p)*Y(n-p+1);
        end
    end
end
Ychap=Ychap+epsilon+moy;
hold on
plot(Y,'r')
plot(Ychap)
hold off
Je serais ravis d'avoir un avis extérieur !
Merci !
Images attachées
Type de fichier : png zoom.png (17,2 Ko, 4 affichages)
Fichiers attachés
Type de fichier : txt yulewalker.txt (281 octets, 2 affichages)
tupierro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h56.


 
 
 
 
Partenaires

Hébergement Web