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 :

[Embedded Function] Problème dans une boucle FOR-END


Sujet :

Simulink

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut [Embedded Function] Problème dans une boucle FOR-END
    Bonjour
    Je suis tout nouveau sur ce forum, je cherche une aide pour mon problème.
    Je veux travailler avec stateflow et utiliser embedded matlab function, mon problème ce que dans embedded matlab function j'ai pas pu faire des incrémentation ni utiliser un tableau (A=[]). Pour être plus claire voici un petit exemple de ma fonction que j'ai mis dans embedded function/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     %%%%%%%%%%%
    function essai(x) % j'ai pris x =10 comme mon input simulink
    Data0=rand(9,10);
    for i=1:3:9
       data1=Data0(i:i+2,:);
       A=x.*data1;
    end
    %%%%%%%%%%%%%%
    voici l'erreur
    Size of index expression is not statically known.

    Function 'test0' (#32.258.263), line 10, column 9:
    "i:i+2"
    Merci de votre aide, j'ai pas pu avancé dans mes travaux à cause de ce problème

    Salut

  2. #2
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Tout d'abord, il y a un problème dans ta boucle for. Tu définis Data0 comme étant une matrice 9*10. Or dans la boucle, lorsque i=9, alors Matlab va essayer d'aller chercher les lignes Data0(9:11) qui n'existent pas (lignes 10 et 11).

    Ensuite, juste en dessous, ton A sera effacé à chaque itération. Tu lui affectes une nouvelle valeur à chaque fois. Et je ne pense pas que tu veuilles ça^^.
    Matlab 7.14.0.739 (R2012a)
    C/C++, python, R, SQL, Pig, MR

    Ma philosophie: Ne rien faire, mais le faire bien.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci de ta réponse
    Mais Data0 est une matrice de 9 ligne et 10 colonne.
    for i=1:3:9 implique que i=1, i=4 et i=7 donc data0(i:i+2,:) me permet de récupérer les trois première lignes(1-3) , les trois deuxième lignes(4-6) et les trois dernière lignes(7-9) de Data0. ça marche dans .m mais pas dans embedded matlab function.

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Dam2227 a raison quand i=9 tu as i:i+2 qui est 9:11 donc ça ne peut pas marcher.
    Peut-être veux-tu plutôt pour ta boucle :non ?

    Et une recherche du message d'erreur sur le site de The Mathworks renvoit ici : Why do I receive an error when I use the colon operator (: ) in the Embedded MATLAB Function block as ...
    Je n'ai pas lu en détail mais cela doit correspondre.
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Vraiment merci
    J'ai pas encore tout résolu mais ça m'a donné une idée, j'essayerai avec cette démarche je vous mettrai au courant du l'avancement du travaille.

    Cordialement

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Merci Dam2227 et caro95470 en particulier caro à partir du lien que vous m'avais donné j'ai pu résoudre mon probleme,(http://www.mathworks.com/access/help...g/brdqvz_.html).

    juste une petite explication le i ne va pas attendre la valeur 9 car le pas est de 3 donc s'il quitte 7 il va arriver à 10, i=1,4,7.

    le A que je cherchais est égale à et encore Merci Dam2227 et caro95470 de votre aide

  7. #7
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Oui, j'avais lu :
    dsl

    Mais concernant la A, il sera égal à

    Si c'est vraiment ce que tu veux, alors tu peux le sortir de la boucle. En fait, la boucle ne sert à rien ici, puisque tu n'enregistre pas les valeurs calculées à chaque itération.
    Matlab 7.14.0.739 (R2012a)
    C/C++, python, R, SQL, Pig, MR

    Ma philosophie: Ne rien faire, mais le faire bien.

Discussions similaires

  1. Nom de variables indexés dans une boucle FOR-END
    Par matthieu.gaudet dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/05/2008, 18h11
  2. [Débutant] Tracé de courbe dans une boucle FOR-END
    Par cozo22 dans le forum MATLAB
    Réponses: 8
    Dernier message: 03/04/2008, 16h42
  3. Sauvegarde de résultats dans une boucle FOR-END
    Par laroche1 dans le forum MATLAB
    Réponses: 4
    Dernier message: 19/12/2007, 16h51
  4. Réponses: 1
    Dernier message: 22/11/2007, 22h52
  5. Problème d'indexage dans une boucle FOR-END
    Par RAMZOON dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/10/2007, 00h59

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