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 :

par ou commencer ?


Sujet :

Simulink

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut par ou commencer ?
    Bonjour,

    Je dois modéliser un probleme a l'aide de Simulink et j'ai besoin pour cela de blocks non existant par défaut. Je cherche donc comment créer mes propres blocks et la je suis paumé... "embedded Matlab function", "level-2 M-file S-Function", "Matlab fcn", "S-Function", etc. que choisir ? J'ai regardé la doc fournit avec Matlab mais ca ne repond pas a mes questions.

    En premier, il me faudrait un bloc n'ayant pas d'inputs, et comportant 2 paramètres qui ne changeront pas tout au long de la simulation : ce sont des chemins d'acces a 2 dossiers. Ces dossiers contiennent un ensemble de fichiers images numérotés et qui se suivent (ces images proviennent d'un film stereoscopique, film de l'oeil droit dans un dossier, celui de l'oeil gauche dans l'autre). Le block doit fournir à chaque étape et pour chaque dossier :
    - l'image correspondante à l'étape de la simulation
    - le nom du fichier
    - la taille de l'image

    Il y a donc 6 sorties (ces 3 la pour chacun des 2 dossiers).

    De plus, le code de ce block existe deja dans un ".m" car avant d'en venir a simulink, j'ai procede a des tests en ligne de commande.

    Parmi les questions que je me pose :
    - quel type de block dois je utiliser ?
    - quand est ce que le block s'execute ? (est ce en lien avec ce qu'ils appellent "sample time" ?)
    - comment faire pour que le block ait au final fourni a la simulation toutes les images et n'en ait zappée aucune ? (C'est important car en bout de simulation, j'ecris l'image resultat du processus entre celle de l'oeil droit et celle de l'oeil gauche dans un troisieme dossier, a partir duquel je reconstruis un film).

    Voila, je n'ai pas trouvé de tutoriels simples, qui explique pas a pas la creation de blocks. La plupart des tutos simples s'arretent a l'utilisation des blocks existants. En outre les exemples fournit par Matlab ne s'approchent pas vraiment de mon probleme.

    Si quelqu'un avait une piste, un debut de reponse, par exemple me dire vers quel type de block m'orienté, ce serait genial, je saurais au moins dans quel doc me plonger. Merci d'avance !

    Zbouirf

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pourrais-tu nous en dire un peu plus sur ton programme et la nécessité d'utiliser Simulink dans ton cas (pour la gestion de fichier j'aurais tendance à dire qu'il vaut mieux utiliser MATLAB)?

    Sinon une solution de "facilité" serait d'utiliser une S-function mais ca dépend encore vraiment de ce que tu vas faire...

    Enfin le nombre d'entrées est variables pour les blocks de types Subsystem, S-function, etc

    Bon courage,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Bonjour Duf,

    D'abord merci de ton interet. Voici en piece jointe un petit schéma, un exemple qui présente l'idée générale de ce que je cherche a faire.

    Remarques :
    - chaque boite peut facilement être assimilée à un block.
    - le loader charge successivement les images contenues dans un dossier.
    - afin de pouvoir fournir le numéro de série, le nom des images du dossier respecte une nomenclature que le loader connait, lui permettant d'extraire ce numéro en parsant la chaine de caracteres du nom du fichier.

    le loader est donc un block "maison" qui propose plusieurs sorties, n'a pas d'entrées, ne s'execute non pas en fonction d'un timer mais seulement lorsque le traitement de l'image precedente est terminé (dans mon cas, le solveur est une enigme !).

    Il me semble que les "level 2 M-File S-function" propose le plus de liberte en ce qui concerne la creation de block, mais il est pour le coup assez compliqué à appréhender...

    J'espere que ca permettra d'y voir plus clair... Merci !
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Ton explication me ramène à ma première question: es-tu obligé d'utiliser Simulink? Pour moi le traitement d'image se fait plutôt avec MATLAB...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Oui, nous faisons de la recherche et je suis seul developpeur. Les autres personnes de mon equipe doivent aussi pouvoir realiser des tests et l'utilisation de blocks reliables facilement et instinctivement en tirant une fleche entre eux leur est abordable, alors que lire et modifier du code... Dans l'idée, bien qu'intervenant aussi dans la recherche, je dois également developper des blocks inexistant que nous pouvons ensuite combiner avec d'autres a notre guise...

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Dans ce cas, il faudrait peut-être utiliser des S-functions mais très franchement je suis pas convaincu que le fait d'utiliser Simulink simplifie le problème dans ton cas.

    Il est tout à fait possible de faire des modules reliable entre eux en MATLAB, c'est moins graphique mais selon comme s'est développé ca peut tout à fait être utilisable par quelqu'un ne connaissant pas le code. De toutes façons, si tu utilises des S-function ca reviendra plus ou moins à ca sauf que tu risques de limiter les possibilités de développement à mon avis...
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    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
    Pourquoi ne pas créer une (ou plusieurs) interfaces graphiques plutôt que d'utiliser Simulink ?
    Ce serait plus pertinent à mon avis.
    Règles du Forum

    Adepte de la maïeutique

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 42
    Points
    42
    Par défaut
    Duf :
    En fait, c'est le cas actuellement, j'ai codé en script Matlab un outil qui permet d'operer un peu a la maniere de Simulink : des boites representant des fonctions et des lignes entre elles representant l'echange des informations.
    Cependant, un tel programme en script Matlab n'est vraiment pas performant, tant d'un point de vue IHM (dessin a l'aide de uipanel, rectangle et line) que d'un point vue execution du modele car toutes les operations sous jacentes (echanges de données, verification des types, notifications des modules, etc.) sont codées en script Matlab. A travers Simulink, je cherche à palier ces problemes, tout en gardant la meme approche. De plus Simulink propose un nombre important de modules existant qu'il me faut redevelopper pour mon soft, c'est une perte de temps. Il permet egalement d'employer des personnes le connaissant sans avoir a leur prodiguer une formation sur le soft maison. Enfin, bon nombre de problemes inherents a la programmation d'un tel logiciel ont ete penses et resolus dans Simulink, pourquoi refaire tout ce travail ?
    En outre, notre probleme ne se reduit pas au simple traitement d'image : d'une maniere generale, le traitement d'une image s'apparente, d'un point de vue mathématique au traitement du signal, et de ce fait, fait appel a des fonctions non spécifiques à l'imagerie.

    Caro-Line :
    C'etait le cas au debut du projet. Mais rapidement nous nous sommes rendus compte que la quantite de travail que cela demandait pour une modification meme mineure posait probleme. Notre objectif n'est pas de creer un programme comme photoshop mais de determiner une suite d'operations permettant d'aboutir au resultat escompte. Au final, l'enchainement de processus mis en oeuvre doit etre automatique et ne demander que le minimum d'interactions possibles avec un operateur. Dans l'ideal, cet enchainement serait, une fois validé, imprimé sur un circuit !
    Mon collegue de travail n'est pas informaticien, c'est un artiste à l'origine d'une decouverte en imagerie, s'il n'est pas en mesure de comprendre tout les tenants et aboutissants de l'imagerie numerique, il sait se debrouiller a un niveau d'abstraction plus eleve. Par exemple : "enlever le bruit", "reduire la taille", "trouver une region d'interet", "marquer les contours", cela lui parle. "realiser une convolution avec un masque gaussien", "faire une interpolation bicubique", "canny" ou "sobel", cela le laisse pantois. Il a une approche du probleme tres "humaine". Le but est donc que de mon cote je developpe et configure des boites realisant les operations qu'il desire, lui permettant ainsi de realiser ses propres tests a son niveau de connaissances, beaucoup plus conceptuel et haut niveau (d'abstraction). J'interviens auprès de lui lorsque la configuration d'un module ne permet pas de realiser l'operation comme il le souhaite.

    Je dois, pour valider le choix de Simulink, realiser quelques tests afin d'informer le reste de l'equipe sur la pertinence de ce produit vis a vis de nos besoins. C'est pourquoi je cherche a developper quelques blocks sans passer trop de temps a comprendre son fonctionnement et apprendre a bien m'en servir. Peut etre avez vous raison et qu'in fine, nos choix s'orienteront vers d'autres solutions. Mais nous devons pour cela nous faire notre propre idée, en regard de nos objectifs et des besoins internes. C'est pourquoi j'ai posté ici, afin de m'eviter une longue et fastidieuse lecture de la documentation. Sur les conseils de Duf, je vais directement regarder la doc des S-function.

    Merci pour votre temps.

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

Discussions similaires

  1. [Divers] Par où commencer ?
    Par calogerogigante dans le forum Cobol
    Réponses: 6
    Dernier message: 03/03/2014, 10h22
  2. Réponses: 4
    Dernier message: 03/11/2005, 18h02
  3. Par ou commencer
    Par tonin33 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 02/11/2005, 21h10
  4. par où commencer, delphiX?
    Par tima dans le forum Débuter
    Réponses: 8
    Dernier message: 07/09/2005, 13h45
  5. Par où commence un site
    Par stujava dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 31/08/2005, 09h33

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