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 :

Utilisation bloc MATLAB Fcn


Sujet :

Simulink

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Utilisation bloc MATLAB Fcn
    salut
    je veux utiliser la fonction matlab function en ligne .
    mais le problème c'est que quand j'utilise une boucle for ce dernier n'enregistre que la dernière valeur de l'entrée (in)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function out=a1(in)
     for k=1:20
     k     
     in(1)
     end
     out=[0];

  2. #2
    Membre éprouvé
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Points : 1 146
    Points
    1 146
    Par défaut
    salut
    Citation Envoyé par flahaymen Voir le message
    salut
    je veut etulisé la fonction matlab function en ligne .
    mait le probleme c'est que quand j'etulise une boucle for se dernier ne enregistre que le dernier valeur de l'entré (in)


    function out=a1(in)
    for k=1:20
    k
    in(1)
    end
    out=[0];
    Je demande pardon mais c’est bizarre ce que tu as fais.
    Ton code ne fait absolument rien, seulement il t’affiche, pour chaque itération le premier élément de vecteur in. Et à la fin tu écrases le résultat qui ne contient pas ou qui n’a pas été utilisé dans ton code.
    Tu cherche à quoi faire par ceci ????

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut probleme matlab function
    je veux utiliser la fonction matlab function en ligne .
    mais le problème c'est que quand j'utilise une boucle for ce dernier n'enregistre que la dernière valeur de l'entrée (in)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function out=a1(in)
     for k=1:20
     k     
     in(1)
     end
     out=[0];

    ce programme est un partie d'un grand programme de reseau de neurone
    mois ce que je veut c'est de faire de calcul en utilisant les valeurs initiale de signale d'entré
    par exemple on donne a cette fonction une step de "10 valeurs finale" et qui commence a partie de 5s

    mois ce que je veut c'est quand il ya de laffichge il me donne
    k=1 ans=0
    k=2 ans=0
    .....
    k=10 ans=10
    k=11 ans =10
    ......
    k=20 ans=10

    Afin d'utuliser toutes les valeurs de signale d'entrée de l'instant zero a l'instant present


    mait ce programme il m'affiche de k=1..k=20 que la derniére valeur c'est a dire ans=10

  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 828
    Points
    14 828
    Par défaut
    Ben tu lui demandes à chaque fois d'afficher in(1) donc il le fait
    Et tu ne nous dis d'ailleurs ce qu'est cette variable in.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut probleme avec fonction matlab function
    Citation Envoyé par Caro-Line Voir le message
    Ben tu lui demandes à chaque fois d'afficher in(1) donc il le fait
    Et tu ne nous dis d'ailleurs ce qu'est cette variable in.

    cette variable in(1) car avant le bloc de matlab function il ya un mixeur qui collecte trois siganux d'entré mois je suis interreseé pour le moment par le premier siganl c'est pour ca j'ai l'appelé avec in(1)
    c'est un signal entrant comme j'ai dit precedament prenant un step ou une rompe n'importe qu'elle siganl d'entré ..
    par exemple le siganl entarnt varie entre 0 et 10 c'ad pour 5s le siganl vaux 0 et pour 15 s le siganl vaux 10
    le but c'est d'enregistrer ces valeurs de signal entrant c'est a dire de o a 10
    c'ad quand j'ai besoin de valeurs de siganl entré a l'instant 2s normallement il me donne 0 et quand j'ai besoin de siganl a l'insatnt 12 il me donne 10
    mait le probleme comme j'ai dit c'est que ce programme n'enregistre que la derniere valeurs 10 c'ad a n'importe qu'elle instant ou je la'ppele il me donne 10

  6. #6
    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 828
    Points
    14 828
    Par défaut
    1. J'ai rien compris, merci de faire un effort pour exprimer clairement ton besoin.

    2. Je ne comprens pas comment tu utilises cette fonction : elle est dans un bloc MATLAB Fcn de Simulink c'est ça ?
    C'aurait été bien de le dire dès le départ que tu parlais de Simulink.
    Peux-tu dans ce cas nous montrer une image du système où ce bloc apparait.
    Ensuite es-tu sur que in(1) contient la valeur que tu souhaites à l'instant t, apparemment ce n'est pas le cas.

    Enfin, j'attends d'avoir plus d'explications plutôt que de partir dans des hypothèses non fondées

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    1. J'ai rien compris, merci de faire un effort pour exprimer clairement ton besoin.

    2. Je ne comprens pas comment tu utilises cette fonction : elle est dans un bloc MATLAB Fcn de Simulink c'est ça ?
    C'aurait été bien de le dire dès le départ que tu parlais de Simulink.
    Peux-tu dans ce cas nous montrer une image du système où ce bloc apparait.
    Ensuite es-tu sur que in(1) contient la valeur que tu souhaites à l'instant t, apparemment ce n'est pas le cas.

    Enfin, j'attends d'avoir plus d'explications plutôt que de partir dans des hypothèses non fondées

    voici les fichier necessaires zipé "une fichier qui s'ouvre avec simulink et un fichier.m nommé a1 " qui contient le programme installé au niveau de bloc simulink
    si tu ouvre le fichier simulink vous allez trouvé la source d'information qui'est une step ensuite le bloc matlab function ensuite l'ocilloscope
    pour le moment je ne suit pas interresé par l'ocilloscope ce qui m'interrese c'est la resultat qui va etre affiché dans matlab
    par exemple on affecte x=in(1) c'ad x va enregistré tous les valeurs de in(1)"signal d'entré"
    je veut mieux exliqué si on échantillonne le signal d'entré sur 20 valeurs c'ad normallement pour k=0 x=0 k=1 x=0 k=2 x=0 k=3 x=0 et pour k=4 x=10 k=5 x=10 ... l'instant 3 est l'instant ou il y a changement de signal d'entré
    si vous mettez ce programme en run matlab va afficher x=10 pour tous les valeurs de k variant entre 0 et 20

    alors que comme j'ai dit j'ai besoin des valeurs x(0)=0 x(1)=0...et pour un autre k choisi il me donne la valeur exacte
    Fichiers attachés Fichiers attachés

  8. #8
    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 828
    Points
    14 828
    Par défaut
    Je n'ai pas Simulink, c'est pourquoi je te demandais un dessin.

    Ceci étant dit, tu parles maintenant d'une variable x qui n'apparait nulle part dans ton fichier a1.m...Elle correspond à la variable out ?
    (qui vaut toujours 0 dans ton programme...)

    Bon je vais tenter d'imaginer : on a donc in qui est la variable qui vient du step (ou autre entrée dans la Matlab Fcn).
    Que veux-tu faire dans ton programme de cette variable in : la mettre dans x ?
    Et pourquoi faire une boucle sur k ?

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par flahaymen Voir le message
    voici les fichier necessaires zipé "une fichier qui s'ouvre avec simulink et un fichier.m nommé a1 " qui contient le programme installé au niveau de bloc simulink
    si tu ouvre le fichier simulink vous allez trouvé la source d'information qui'est une step ensuite le bloc matlab function ensuite l'ocilloscope
    pour le moment je ne suit pas interresé par l'ocilloscope ce qui m'interrese c'est la resultat qui va etre affiché dans matlab
    par exemple on affecte x=in(1) c'ad x va enregistré tous les valeurs de in(1)"signal d'entré"
    je veut mieux exliqué si on échantillonne le signal d'entré sur 20 valeurs c'ad normallement pour k=0 x=0 k=1 x=0 k=2 x=0 k=3 x=0 et pour k=4 x=10 k=5 x=10 ... l'instant 3 est l'instant ou il y a changement de signal d'entré
    si vous mettez ce programme en run matlab va afficher x=10 pour tous les valeurs de k variant entre 0 et 20

    alors que comme j'ai dit j'ai besoin des valeurs x(0)=0 x(1)=0...et pour un autre k choisi il me donne la valeur exacte
    Bonjour,
    Quant à moi je t'ai bien compris bien que j'utilise pas MATALB mais je peux t'aider:
    t'as qu'à appeler différement tes 3 signuax pour ne pas les confodre avec les tableaux des valeurs d'entrée. et dans ta boucle tu peut corréler à chaque élément d'entrée sa srotie correspondante en utilsant le même compteur. et juste à la fin de ta boucle tu peux extraire l'ettération que tu veux sans écraser les autres. je connais pas le syntaxe du language pour te donner exactement la boucle en question mais ça me parait évident comme ça. Evite surtou la confision entre l'appelleation de tes variables, de tes signaux d'entrée et tes vraiables d'ittértaion.
    Bonne Chance.

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Beginer Voir le message
    Bonjour,
    Quant à moi je t'ai bien compris bien que j'utilise pas MATALB mais je peux t'aider:
    t'as qu'à appeler différement tes 3 signuax pour ne pas les confodre avec les tableaux des valeurs d'entrée. et dans ta boucle tu peut corréler à chaque élément d'entrée sa srotie correspondante en utilsant le même compteur. et juste à la fin de ta boucle tu peux extraire l'ettération que tu veux sans écraser les autres. je connais pas le syntaxe du language pour te donner exactement la boucle en question mais ça me parait évident comme ça. Evite surtou la confision entre l'appelleation de tes variables, de tes signaux d'entrée et tes vraiables d'ittértaion.
    Bonne Chance.
    bon monsieur je veut t'expliqué de la depart
    1-j'ai un grand programme sur le reseau de neurone qui se trouve sur une fichier .m
    2-j'ai fait simulé une machine asynchrone par des blocs simulink
    3-mon but c'est de commandé cette machine a travers un reseau de neurones qui se trouve sur une fichier .m alors que la simulation ne peut etre que sur simulink c'est pour ca j'ai besoin de transformé ce programme de fichier.m a un bloc de simulink
    4-quand j'ai essayé de transformé ce programme j'ai u des diffeculté lors de RUNNIG

    5-ce progarmme necessite 3 siganux d'entré "la vitesse ,la commande et la vitese de referance"

    6-dans ce programme il ya des calcul avec des valeurs a l'instant k k-1 k-2 k-3 etc pour les trois siganux ,ce calcuil se fait travers des boucles for presqua j'ai 5 boucle

    7-apré plusieur essai et plusieur rechrche j'ai constaté que ce programme n'est pas entrain de lire tous les valeurs des signaux d'entrés il tient en compte que la derniére valeurs .donc normallement le probléme c'est avec la boucle ou il ya une lecture de signal d'entré .

    8-c'est pour ca j'ai résumé ma probléme dans un petit exemple car c'est la ou il ya de probléme :si je trouve une solution telque l'orsque je demande la valeurs a 'instant initiale il me donne zero et lorsque je demande la valeur a l'instant finale il me donne 10 alors c'est resolu
    nb:pour le moment l'affichage sur matlab est ma solution ensuite cette siganl de sortie sera a la sortie de bloc matlab function

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut pb sur simulink
    1-j'ai un grand programme sur le reseau de neurone qui se trouve sur une fichier .m
    2-j'ai fait simulé une machine asynchrone par des blocs simulink
    3-mon but c'est de commandé cette machine a travers un reseau de neurones qui se trouve sur une fichier .m alors que la simulation ne peut etre que sur simulink c'est pour ca j'ai besoin de transformé ce programme de fichier.m a un bloc de simulink
    4-quand j'ai essayé de transformé ce programme j'ai u des diffeculté lors de RUNNIG

    5-ce progarmme necessite 3 siganux d'entré "la vitesse ,la commande et la vitese de referance"

    6-dans ce programme il ya des calcul avec des valeurs a l'instant k k-1 k-2 k-3 etc pour les trois siganux ,ce calcuil se fait travers des boucles for presqua j'ai 5 boucle

    7-apré plusieur essai et plusieur rechrche j'ai constaté que ce programme n'est pas entrain de lire tous les valeurs des signaux d'entrés il tient en compte que la derniére valeurs .donc normallement le probléme c'est avec la boucle ou il ya une lecture de signal d'entré .

    8-c'est pour ca j'ai résumé ma probléme dans un petit exemple car c'est la ou il ya de probléme :si je trouve une solution telque l'orsque je demande la valeurs a 'instant initiale il me donne zero et lorsque je demande la valeur a l'instant finale il me donne 10 alors c'est resolu
    nb:pour le moment l'affichage sur matlab est ma solution ensuite cette siganl de sortie sera a la sortie de bloc matlab function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function out=a1(in)
     for k=1:20 
        w=in(1);
        k;
        s=[w k]
     end
    out=[0];

    le prb quand je demande s(1) sur matlab il m'indiqu erreur
    Fichiers attachés Fichiers attachés

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut pb lors de l'enregistrement du signal d'entrée
    salu
    je travaille sur simulink
    1-on a un programme matlab sur un fichier.m ce programme va etre transmis vers un bloc sur simulink "bloc matlab fuction"
    2-le role de ce programme est de lire le siganl d'entré ,qui est defini par le variable in dans le programme et qui reprente l'entré de bloc matlab fuction,
    ce signal d'entré peut etre un step ou une rompe ...
    3-on a ajouté un bloc d'echantillonage, entre la source d'entré et le bloc matlab fuction ,d'une periode de 2 s cad chaque 2 s on a un valeur de signal d'entré
    4-j'ai affecté le siganl d'entré a une variable w
    5-ce que je veut c'est lorsque je demande w(1) ou w(2) ou... il me donne le resultat sur matlab mais ce n'est pas le cas
    voici le code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function out=a1(in)
        w=in(1);
    out=[0];
    rq:on prend le temp d'execution c'est 10 s c'ad si on mait on compte la periode d'echantillonage on aura alors 5 valeurs enregistré
    Fichiers attachés Fichiers attachés

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par flahaymen Voir le message
    salu
    je travaille sur simulink
    1-on a un programme matlab sur un fichier.m ce programme va etre transmis vers un bloc sur simulink "bloc matlab fuction"
    2-le role de ce programme est de lire le siganl d'entré ,qui est defini par le variable in dans le programme et qui reprente l'entré de bloc matlab fuction,
    ce signal d'entré peut etre un step ou une rompe ...
    3-on a ajouté un bloc d'echantillonage, entre la source d'entré et le bloc matlab fuction ,d'une periode de 2 s cad chaque 2 s on a un valeur de signal d'entré
    4-j'ai affecté le siganl d'entré a une variable w
    5-ce que je veut c'est lorsque je demande w(1) ou w(2) ou... il me donne le resultat sur matlab mais ce n'est pas le cas
    voici le code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function out=a1(in)
        w=in(1);
    out=[0];
    rq:on prend le temp d'execution c'est 10 s c'ad si on mait on compte la periode d'echantillonage on aura alors 5 valeurs enregistré
    Bonjour,
    Excuses moi j'arrive tooujours pas à comprendre ta logique, tu demande l'ittération numero Une et puis t'initilaise la sortie à Zero.
    autre peux tu STP utiliser la fonction Plot pour verifier au fur et à mesure si ton bout de code est dans la voie que tu cherche ou pas.

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Beginer Voir le message
    Bonjour,
    Excuses moi j'arrive tooujours pas à comprendre ta logique, tu demande l'ittération numero Une et puis t'initilaise la sortie à Zero.
    autre peux tu STP utiliser la fonction Plot pour verifier au fur et à mesure si ton bout de code est dans la voie que tu cherche ou pas.
    excuse mois monsieur pour le moment on n'interrese pas a voir la sortie du bloc matlab function

    j'ai fait s'implifié ma probléme

    mait ce que m'interrese c'est ce qui ce deroule dans matlab, comme j'ai dit je suis interrese que pour l'enregistrement des valeurs de signal d'entré dans matlab ,pour que je peut l'etulisé dans mes calculs.
    et pour la function plot quand je l'etulise il maffiche que des points
    le probléme c'est command enregistré le signal d'entré

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/03/2009, 12h54
  2. Reprendre la main avec SAS après une utilisation de Matlab
    Par 8twilight8 dans le forum SAS Base
    Réponses: 5
    Dernier message: 03/03/2009, 12h21
  3. Utiliser le MATLAB Engine sans MATLAB
    Par apprenti5908 dans le forum MATLAB
    Réponses: 4
    Dernier message: 10/02/2009, 18h51
  4. [MEX] Modifier des Mex-Files Matlab 7 pour utilisation sur Matlab 5.3
    Par mathieu2703 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/08/2007, 13h20
  5. Utilisation de Matlab stochastique et probabilité
    Par jermoni2000 dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/02/2007, 23h51

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