Bonjour,
Est-il possible de créer une variable globale dynamique sous Simulink? (En fait, je souhaiterais réaliser un tableau dynamique utilisable par mes blocs "embedded function" présents sur mon schéma simulink).
Merci
Bonjour,
Est-il possible de créer une variable globale dynamique sous Simulink? (En fait, je souhaiterais réaliser un tableau dynamique utilisable par mes blocs "embedded function" présents sur mon schéma simulink).
Merci
Bonjour,
Tu peux peut-être utiliser les blocs Data Store Memory qui permettent de partager des variables dans ton ton modèle Simulink.
Duf
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
Oui, mais je n'arrive pas à faire qu'elle soit dynamique.
A la rigueur, ce n'est pas grave si elle n'est pas globale, mais il faudrait qu'à chaque instant de ma simulation, je sois capable d'enregistrer une nouvelle valeur dans mon tableau (sachant que je connais pas la taille finale de ce tableau), puis que je me serve de toutes les valeurs de ce tableau pour calculer l'intégrale numérique des valeurs obtenues, tout cela dans un bloc "embedded function".
J'ai déjà codé l'algorithme pour calculer l'intégrale d'une fonction f(t), mais justement, il me manque cette fonction f(t) que je souhaiterai enregistrer dans ce tableau (je ne sais pas si c'est clair ou pas ce que je veux faire...)
Si tu utilises des blocs Data Memory, tu as des blocs Read et Write qui te permettent à chaque instant de lire ou écrire la valeur de la variable.
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
Mais ça écrase la valeur précédente non?
Oui ca écrase la variable précédente mais rien n'empêche de faire un vecteur dans lequel tu ajoutes les valeurs les unes à la suite des autres...
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
Dans ce cas, comment faire un tel vecteur? puis-je écrire dedans dans un premier temps, puis récupérer ses valeurs pour calculer mon intégrale, et ceci dans la même simulation?
Est-ce que tu pourrais détailler ce que tu veux faire au final?
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
J'aimerai faire la chose suivante (je travaille en temporel) : à chaque instant t, je calcule la vitesse de mon bras robotique. Théoriquement, si j'intègre cette vitesse, je suis sensé obtenir la position.
Pour cela, je dois réaliser une intégration numérique (j'ai codé la méthode des trapèzes, permettant d'obtenir l'intégrale d'un signal f(t)).
C'est pourquoi je dois construire un signal vitesse(t), afin de pouvoir utiliser ma fonction permettant l'intégration.
Pour construire ce signal vitesse(t), il me faut donc enregistrer chaque valeur de ma vitesse dans un tableau à chaque instant t, d'où la nécessité d'utiliser un tableau dynamique. Est-ce que c'est plus clair?
Si tu travailles dans Simulink, pourquoi ne pas directement utiliser un bloc intégrateur qui s'occupera tout seul de faire cette intégration?
Même si tu veux coder ton intégrale à la main, tu n'as pas besoin de stocker toutes les valeurs, il te suffit de calculer ton intégrale à chaque pas de temps et de mettre à jour sa valeur.
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
mais le bloc intégrateur marche lorsqu'on travaille sous laplace, or je travaille en temporel
Non, le bloc intégrateur fait une intégration temporelle.
Simulink & Embedded Coder
Au boulot : Windows 7 , MATLAB r2016b
A la maison : ArchLinux mais pas MATLAB
Vraiment? Mon superviseur m'a dit de ne pas l'utiliser car il ne fonctionnait qu'en étant sous Laplace.....
Bon, je me suis débrouillé autrement, je n'ai pas utilisé de variables dynamiques, en connaissant mon pas, j'ai calculé combien de mesures j'aurais, donc j'ai dimensionné mon tableau grâce à cela. Le point négatif, c'est que si je change les paramètres de simulation, je dois recalculer à la main la taille de mon tableau (je ferais peut-être une fonction pour le faire ensuite, mais là, je n'ai pas le temps).
Merci pour l'aide apportée
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager