Bonsoir à tous,
Je viens vers vous car j'ai un soucis pour la simulation d'un Schéma Simulink contenant un bloc MATLAB S_Function.
Mon travail consiste à faire la simulation de dérivé première VX(t) de l’entrée X(t), tel que X(t) et VX(t) sont des vecteurs, qui ont la même longueur.
X(t) est l’entrée de block s_function,
VX(t) est la sortie de block s_function,
le block de s_function, nommé essaiii, leur code est le suivant :
Où les deux fonctions derive1 et derive2 sont deux fonctions qui calculent la dérivé première de x et la dérivé seconde de x (donc la dérivé première de VX) respectivement dont leurs codes sont les suivants :
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
38 function [sys,x0,str,ts]=essaiii(T,xi,X,flag) switch flag case 0 % Initialisation str = []; ts = [0 0]; s = simsizes; s.NumContStates = 1; s.NumDiscStates = 0; s.NumOutputs = 1; s.NumInputs = 1; s.DirFeedthrough = 0; s.NumSampleTimes = 1; sys = simsizes(s); x0 = [0] % valeur initiale des états case 1 % calcul de dx/dt disp 1 VX = derive1(T,X) sys = derive2(VX,T) case 3 % calcul des sorties disp 3 sys=xi case{2 4 9} disp 4 sys=[] otherwise error(['unhandled flag = ',num2str(flag)]); end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function VX=derive1(T,X) X=[X; 13.1940]; T=[T; 1.34]; dD=diff(X); dt=diff(T); VX=(dD)./(dt); VX=[VX]; return ;Il n’y a pas de message d’erreur mais il ne me donne pas le résultat de simulation convenable. En effet le résultat que je voudrais obtenir de la simulation est le suivant :
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 function AX=derive2(VX,T) %-----------differentiel du temps VX=[VX; -13.800] T=[T; 1.34]; dt=diff(T); %-----------differentiel du signal vitesse suivant X dDVX=diff(VX); AX=(dDVX)./(dt); AX=[AX]; return;
Or le résultat que me donne le code de s_function est comme suit:
![]()
Partager