Bonjour
j'ai quelques soucis avec mon programme MATLAB dans lequel je mets en place un observateur d'état. Pour y arriver, je dois résoudre une équation différentielle. Le problème, c'est qu'à l'intérieur de la fonction décrivant mon équation différentielle, il existe un tableau de données mesurées (de taille 600000) et je ne sais pas comment choisir une seule donnée à chaque pas de résolution de mon solveur. Il s'en suit donc un message d'erreur signalant une inadéquation de dimension matricielle.
Cette donnée représente une tension mesurée et je l'ai nommée yr. Voici en gros mon programme.
programme principal :
programme définissant mon équation différentielle: equadif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 load tension; yr=Tension; t=0:1:(length(yr)-1); xe0=[0 0 0]'; [t xe] = ode45(@equadif,t,xe0);
Je comprends pourquoi MATLAB n'arrive pas à résoudre ça, ye et yr n'ont pas la même dimension ; il faudrait que je puisse choisir, à chaque pas, yr(j) qui sera lui de dimension 1 donc compatible à ye.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function dxe = equadif(t,xe) global A B L C Rs L u ye yr %(les matrices A(3*3), B(3*1), C(1*3) et D(1*1) sont connues, L est connu. u = 10; ye = C*xe+Rs*u; %sortie estimée dxe = A*xe+B*u+L*(yr-ye); % sortie réelle contenue dans un tableau (1*600000)
Voili voilou, je comptes sur votre aide pour y arriver, il ne me reste pas beaucoup de temps avant la fin du projet. C'est la dernière étape. Alors SVP à vos claviers. Merci d'avance![]()
Partager