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 :

Lecture d'une matrice ligne par ligne


Sujet :

Simulink

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 27
    Points
    27
    Par défaut Lecture d'une matrice ligne par ligne
    Mon Pbat c'est une matrice dont les colonnes représentent chaque mois et les lignes la valeur de la puissance de la batterie au pas de temps donné

    tout ce qui suit doit s'exécuter a chaque pas de temps = a chaque pas de temps de la simulation j'utilise( enfin j'aimerais utiliser) une ligne différente de Pbat

    Pbat est divisé par Vbat grace au bloc 'divide'

    j'initialise le bloc Memory avec Vbat0 ce qui me permet de faire la premiere ligne de calcul qui devrait me donner Vbat
    et ensuite a la fin de cette ligne de calcul la nouvelle valeur Vbat qui sert à diviser la deuxième ligne de Pbat


    Je sais pas si c'est clair mais en tout cas Simulink n'a pas l'air de le comprendre!

    --> Block error Divide : Error in port widths or dimensions. Output port 1 of 'my modele' has 12 elements. This port does not accept the dimensions ( or orientation) specified by the output signal.


    [PS: Vbat0 doit être un vecteur 1x1 ou 1x12 ?]


    D'avance merci à ceux qui prendront le temps de me répondre!

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    ta question n'est pas très claire
    mais pour injecter un signal dans simulink on utilise en général un bloc "from workspace" qui prend par exemple une matrice n*2
    la première colonne est le temps
    la seconde la valeur

    fabien

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    J'injecte effectivement mon signal grâce a un bloc "from workspace"
    Ma matrice est n*13 la première colonne étant le vecteur temps et les autres représentant chaque mois de l'année.

    Mon problème est que j'ai besoin de la valeur calculée à la ligne n-1 comme input de mon calcul à la ligne n.

    Ceci marche bien quand le signal injecter est de taille n*2 mais plus pour des matrices de taille plus grande.


    Mon problème est-il plus clair?

    Merci

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Citation Envoyé par bab33 Voir le message
    Mon problème est-il plus clair?
    pas vraiment
    d'ailleurs j'ai un doute qu'il soit également clair dans ton esprit :
    la première colonne est le temps, les suivantes les mois (donc le temps aussi !!!!!)

    sinon si tu veux faire des calculs sur les lignes de ta matrices d'entrée, il faut que
    - ton temps soit equi réparti
    - ton simulateur en solveur discret, au même pas de temps que tes lignes
    et il suffit alors de mettre un bloc 1/z ou memory pour avoir les valeur du pas de temps precedent (et ce pour toutes les colonnes sauf la première)

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par le fab Voir le message
    pas vraiment
    d'ailleurs j'ai un doute qu'il soit également clair dans ton esprit :
    la première colonne est le temps, les suivantes les mois (donc le temps aussi !!!!!)
    Oui alors je m'explique, en fait j'ai des données pour une journée type de un mois. Et mes données ont 'n' valeurs de la taille de l’échantillonnage sur cette journée type.

    Au lieu de faire 12 fois cette simulation pour chaque journée type, j'ai pensé que je pouvais créer une matrice et travailler sous forme matricielle.


    Citation Envoyé par le fab Voir le message
    sinon si tu veux faire des calculs sur les lignes de ta matrices d'entrée, il faut que
    - ton temps soit equi réparti
    - ton simulateur en solveur discret, au même pas de temps que tes lignes
    et il suffit alors de mettre un bloc 1/z ou memory pour avoir les valeur du pas de temps precedent (et ce pour toutes les colonnes sauf la première)
    J'ai bien mis mon pas de temps dans la configuration des paramètres de la simulation.
    Par contre cf la figure jointe, j'ai l'impression que mon bloc 'divide' "ne veut pas" diviser la ligne n de ma matrice par le vecteur ligne Vbat ici du bloc 'memory'

    Merci d'être aussi réactifNom : Bat1.png
Affichages : 1205
Taille : 56,5 KoNom : Bat1.png
Affichages : 1205
Taille : 56,5 Ko

  6. #6
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    divide divise sans aucun soucis des vecteurs
    ton problème semble plutot que le signal de sortie de divide n'est pas compatible avec ce qui suit :
    - as tu spécifier qqch de particulier dans ton outport "ibat" ou dans un des blocs cachés par ton message d'erreur ?

    essayes de déconnecter la sortie de divide pour voir

    cherche également la source du doute sur la dimension de ton signal (?(12))

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Salut Fab,

    Je pense que le doute sur la dimension ?(12) vient du fait que avant mon bloc memory, simulink est complètement perdu sur la taille de mes matrices/vecteur.

    Je remets un screenshot de mon modèle, il semblerait que en effet le bloc 'IF' n'aime pas trop être feeder sur une entrée d'un vecteur ligne de dimension [1x12]
    Je pensais peu-être mettre un DEMUX en sortie du bloc DEVIDE et faire transiter douze fil a travers tout mon schéma mais je suis pas sûre que ca soit la solution optimale surtout que certain bloc acceptent bien mon vecteur ligne et il faudrait donc un MUX pour ces blocs là... ca fait un peu usine à gaz.
    Images attachées Images attachées  

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2013
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    bonjour
    j ai eu le mémé problème pour matrice d entre (2000*1) et j ai pas trouve aucune solution or si tu l utilise sur matlab editor CA fonction normal mais pas sur simulink

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 29
    Points : 27
    Points
    27
    Par défaut
    Moh-ichi tu veux de l'aide ou tu me proposes une solution sans simulink.

    Moi je suis obligée d'utiliser simulink

Discussions similaires

  1. lire une base de donnee ligne par ligne
    Par thildouille dans le forum Langage
    Réponses: 9
    Dernier message: 03/06/2011, 00h50
  2. Réponses: 8
    Dernier message: 18/07/2010, 21h16
  3. [Débutant] matrice en vecteur ligne par ligne
    Par athmanebahnous dans le forum MATLAB
    Réponses: 2
    Dernier message: 06/04/2009, 22h06
  4. Réponses: 12
    Dernier message: 14/05/2008, 17h15
  5. Réponses: 3
    Dernier message: 16/10/2007, 20h45

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