IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Simulink Discussion :

Calcul de la dérivée dans une S-Function


Sujet :

Simulink

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 19
    Par défaut Calcul de la dérivée dans une S-Function
    Bonjour,

    s_v_p, j'ai utilisé la fonction diff pour calculer la dérivée (vitesse), elle est bien exécutée en MATLAB, mais lorsque je l’appelle dans une S-Function, le résultat est toujours zéro, et vraiment je ne comprends pas pourquoi, est-ce que vous pouvez m'aider et merci d'avance.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Pourrais-tu nous montrer le code que tu utilises dans ta S-function?

    Duf

  3. #3
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 19
    Par défaut code s_function
    Merci bien
    voici le code de la S-Function sachant que la sortie doit être la simulation de vitesse.
    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
    39
    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 = vitessex(T,X)
     
     sys = accelerationx(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
    La fonction de vitesse est la suivante:
    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
    function VX=vitessex(T,X)
    %calcul de la vitesse suivant X
     
    % les entrées sont la composante suivant X et le temps t
    % la sortie est la composante de vitesse suivant X, VX
     
     
    dD=diff(X)
     
    dt=diff(T)
     
    VX=(dD)./(dt)
     
     
     
    %VX=[0 ;VX(1:length(VX)-1); 0];% on ajoute le zéro comme vitesse(état) initial
    %VX=[VX; 0]% de plus le vitesse à la fin du mouvement toujours égale à zéro 
     
    VX=[0,VX];
     
    return ;
    fonction accélération:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    % la fonction accelerationx calcule la composante en accélération suivant l'axe des X 
    % les paramètres d'entrée sont le signal de vitesse suivant l'axe des X et la composante temps 
    function AX=accelerationx(VX,T)
     
    %-----------différentiel du temps
    dt=diff(T);
    %-----------différentiel du signal vitesse suivant X
    dDVX=diff(VX);
    AX=(dDVX)./(dt);
    AX=[0,AX];
     
    return;

Discussions similaires

  1. Calcul d'un rang dans une requête
    Par rossy dans le forum Access
    Réponses: 7
    Dernier message: 26/07/2018, 19h17
  2. [Requête/SQL]Calcul d'un solde dans une requête ou un état
    Par alalau dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/04/2007, 16h02
  3. calcul entre deux champs dans une table
    Par pomar dans le forum Access
    Réponses: 7
    Dernier message: 29/11/2006, 18h27
  4. calcul de valeurs présentes dans une liste de résultat
    Par Makaveli33 dans le forum Access
    Réponses: 8
    Dernier message: 15/05/2006, 19h03
  5. [SQL] calcul de plusieurs variables dans une table
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2006, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo