Bonjour à vous,
Je suis actuellement dans un laboratoire de recherche en Automatique. Mon problème est dans la forme très simple a résoudre, mais un peu plus compliqué dans le fond.
En effet, j'ai crée un filtre des moindres carrés récursif. Ce filtre marche très bien en séquentiel ( avec un signal dont le temps d'étude est connu et donc son vecteur associé lui aussi est connu qui est 1 matrice 1 colonne et 300 lignes).
Le problème ( et oui on i vient ) et que je désire refaire ce filtre en simulink ( pour l'adapter a du temps réel). Et pour cela je doit travailler avec des signaux dont je ne connaît pas le temps de l'étude.
le début de ma méthode en séquentiel commence ainsi :
Cette méthode marche tres bien avec des signaux contenant du bruit et une erreur de moyenne par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 %************************************************************************** % METHODE DES MOINDRES CARRES RECURSIVE % % METHODE N°1 %************************************************************************** %Définition du vecteur d'observation %************************************************************************** t = 1:1:300; nb_t = length(t); %Calcul de la matrice d'observation X %************************************************************************** u = 1:1:300; u = u'; x0 = ones(300,1); x1 = u; x2 = u.*x1; X = [x0 x1 x2]; teta = [0;0;0]; P = [1000 0 0;0 1000 0;0 0 1000]; i = 1; while(i<301) x = [x0(i);x1(i);x2(i)]; K = P*x*inv(1+x'*P*x); teta = teta+K*(signal(i)-x'*teta); P = P-K*x'*P; i = i+1; end %Calcul des valeurs du modèle %************************************************************************** y_methode = X*teta;
L’entrée de cette méthode est signal et la sortie y_méthode.
Voici le résultat que cela peut donner :
Il faut donc, comme je le disait précédemment, passer cette méthode de filtrage en simulink pour utiliser le real time workshop.
Ma question est donc, comment effectuer les même opérations avec un signal inconnu. Car la matrice d'observation et calculer sur le fait que le signal en entrée est une matrice 1 colonne 300 lignes. Si je passe en simulink je ne connaît plus mon signal et donc mon vecteur d'observation n'est pas possible à définir ?
J'aimerais donc si cela est possible des idée de votre part pour réussir cet méthode .
Merci d’avance à tous !!
PS : si mon explication vous semble compliquer n’hésiter pas à m’en faire part j’essaierai de vous éclairé.
MarZz
Partager