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 :

[Débutant] S-Function en langage C


Sujet :

Simulink

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [Débutant] S-Function en langage C
    Bonjour,

    Abstract : Problèmes de ports d'entrée et de sortie à taille dynamique pour un bloc décrit par une SFunction.

    Je souhaite écrire en C une S-function pour Simulink simple :

    Typage des ports d'entrée/sortie du bloc :

    3 entrées :
    - Input1 : entier supérieur à 0
    - Input2 et Input3 : vecteurs à taille dynamique
    ssSetInputPortWidth(S, 2, DYNAMICALLY_SIZED);
    1 sortie :
    Output1 : vecteur à taille dynamique également.

    Prérequis :
    Input2 et Input3 sont 2 vecteurs de taille égale t1, taille variable donc mais qui est renseignée par Input1 (Input1 = t1).
    Output1 est de taille t2 = t1*2.

    Traitement :
    La fonction mdlOutputs qui gère le traitement insère successivement les valeurs de Input2 et Input3 dans Output avec l'algorithme suivant :
    for (i = 0 to t1)
    {
    Output[i] = Input2[i];
    Output[i+1] = Input3[i];
    }

    Mon problème :
    Mon résultat est incohérent : le vecteur de sortie est de la même taille que le vecteur d'entrée et toutes les valeurs de sortie sont à zéro.
    Si j'arrête d'écrire au delà de l'indice t1-1 du tableau, alors le résultat est correct. Il parait impossible d'avoir un vecteur de port de sortie de taille dynamique supérieure à celle d'un vecteur d'un port d'entrée également dynamique.

    Je n'ai trouvé aucune documentation correspondante permettant d'expliquer les conséquences induites par l'utilisation de taille de vecteurs dynamiques. Mon niveau en Simulink étant celui d'un débutant, je suppose que la réponse est simple et que d'autres ont déjà tenté ce genre d'expériences avant moi.

    Je remercie d'avance les personnes qui pourront m'apporter un éclaircissement sur ce sujet.

    Cordialement,

    Laurent C.

    Edit : Mon code n'étant pas confidentiel, je peux le diffuser sur ce sujet. Il ne m'a pas apparu nécessaire de le faire, mais quelqu'un peut être intéressé pour le tester en l'intégrant dans un bloc.

  2. #2
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Balladé de docs en docs, j'ai enfin trouvé la réponse à cette passionante question :

    The upper S-Function block is driven by a block with a three-element output vector. The lower S-Function block is driven by a block with a scalar output. By specifying that the S-Function block has dynamically sized inputs, the same S-function can accommodate both situations. The Simulink engine automatically calls the block with the appropriately sized input vector. Similarly, if other block characteristics, such as the number of outputs or the number of discrete or continuous states, are specified as dynamically sized, the engine defines these vectors to be the same length as the input vector.
    En résumé pour les anglophobes : Une taille de vecteur de sortie spécifiée dynamique sera de la même taille qu'une celle du vecteur d'entrée dynamique.

    source : site de mathworks (Choisir "Overview of S-Functions" puis "S-Function Concepts")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutante] Informations sur le langage Pascal
    Par rimkm dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2009, 16h41
  2. Débutant demande conseil: quel langage choisir?
    Par peel_retrogames dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 27/05/2006, 11h54
  3. Réponses: 4
    Dernier message: 13/08/2005, 10h20
  4. [Débutant en MDA] métamodèle du langage C++
    Par oursblanc dans le forum C++
    Réponses: 7
    Dernier message: 23/02/2005, 11h26
  5. [Débutant] Quel langage choisir pour débuter ?
    Par Invité dans le forum Débuter
    Réponses: 15
    Dernier message: 05/07/2004, 22h13

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