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

MATLAB Discussion :

Declaration de variable / Parametre de fonction [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut Declaration de variable / Parametre de fonction
    Bonjour

    Tout d'abord, je voudrais préciser que je viens du C, langage que je maitrise pas trop mal. J'ai beaucoup utilisé Matlab en TP, mais rien de bien poussé. Mais étant actuellement en stage, j'ai besoin de faire des choses plus évoluées. Mon problème vient que je n'ai jamais eu de cours de Matlab et que je raisonne en C, je bloque donc sur des choses qui ne devraient sûrement pas l'être.


    Contexte : j'ai une série de paramètres (de variables) dans un main.m, et j'ai besoin de les passer à différentes fonctions que ce soit pour une simple lecture ou pour une modification. J'ai donc pensé à des variables globales, mais c'est moche et Caro-Line n'aime pas (elle reconnaitra le dit post de conseils à la programmation). J'ai donc voulu faire des variables dans le main et le passer en paramètres à mes fonctions, mais je rencontre vite quelques difficultés...



    1er problème : en C, on peut créer une variable sans lui donner de valeur. Matlab visiblement n'aime pas ça. Comment puis-je faire ?



    2e problème : s'il n'y a pas de modification à faire, tout va bien. La question se pose quand je dois modifier la valeur de variable passée en paramètre. Matlab fonctionne t-il comme le C où un passage par valeur ne permet pas de modification, obligeant à utiliser un pointeur ? Fonctionne t-il autrement (sûrement ^^)? Dans ce cas, comment ?



    Merci d'avance, encore une fois, pour vos éléments de réponses

  2. #2
    Expert confirmé
    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
    Par défaut
    Oui alors, c'est simple : c'est pas du tout pareil

    Les pointeurs n'existent pas, les histoires de passage par paramètres ou par valeurs on oublie.

    On ne crée pas de variable tant qu'on n'a rien à lui mettre dedans, ou alors on lui donne une valeur par défaut suivant son type (voir ZEROS par exemple), on appelle alors cela de la préallocation.

    Le mieux si tu veux "envoyer" une valeur à une fonction et la récupérer modifiée c'est de bien utiliser les entrées/sorties :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %main.m
    function main()
    a=3;
    a=funmodif(a);
     
     
    %autre fichier funmodif.m
    function sortie=funmodif(entree)
    sortie=3*entree;
    Évidemment là c'est un exemple très simple.
    Quand il y a beaucoup de variables à passer le mieux est encore de tout mettre dans une structure.

    J'espère que cela répond à tes interrogations, ce n'est pas facile car il s'agit là de comprendre la philosophie du langage

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Si, ça m'aide merci ! Mais oui, pas facile de se plonger dans la philosophie d'un nouveau langage.


    J'avais pensé à mettre le paramètre en entrée et à le récupérer en sortie, mais je trouvais ça lourd. S'il n'y a pas d'autre solution, je vais bien être obligé de le faire comme ça.


    J'avais vu l'histoire de la préallocation, j'en fait de temps en temps, par exemple pour les matrices. En fait, tu déclares simplement l'entité avec une valeur plus ou moins bidon ; et après tu modifies sans soucis d'espace mémoire ?

  4. #4
    Expert confirmé
    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
    Par défaut
    Bidon, pas forcément.
    En général c'est surtout pour les matrices plus ou moins grosses que tu vas faire grandir dans une boucle.
    C'est en général mieux de lui donner tout de suite sa taille définitive (en général en la remplissant de 0 avec ZEROS)

    Pour l'espace mémoire euh...justement en faisant la préallocation tu réserves en quelque sorte la mémoire dont tu auras besoin pour ton objet (enfin si tu le fais bien et si tu sais à l'avance la taille et le type de ton objet).

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    C'est bien connu que le PC fait toujours ce que le programmeur demande et non ce que le programmeur voudrait

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/06/2007, 15h29
  2. retour de variable d'une fonction
    Par thunderblade dans le forum ASP
    Réponses: 4
    Dernier message: 28/04/2005, 13h27
  3. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  4. declarer une variable dans le query analyzer
    Par graphicsxp dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 29/03/2005, 11h26
  5. Réponses: 5
    Dernier message: 09/02/2005, 18h50

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