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 :

Syntaxe : fonction fittype.


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Syntaxe : fonction fittype.
    Bonjour.J ai ma fonction fittype qui s écrit de la sorte.

    f = fittype( 'ax+b', abscisses,ordonnees) dans laquelle abscisse représente mon vecteur d'abscisse et ordonnées les ordonnées correspondantes. Mon but serait dans ce cas d'ajuster un modèle ax + b à ce jeu de données. Comme je l'ai écrite ici, ma fonction effectue un ajustement des paramètres a et b.
    Maintenant admet-on que j connaisse la valeur de b (par ex contrainte à lorigine) et que je veuille la fixer à 2 par exemple.
    Si j'écris f = fittype( 'ax+2', abscisses,ordonnees), il n'y a aucun problème et matlab ajuste seulement a de façcon optimale.

    Dans mon cas j'ai beaucoup plus de coeffcient que ça dans mon equation et je récupère ces coefficients à partir d'une matrice. J'aimerais donc laisser l'écriture littérale ds l'expression, sacahant que mon coefficient est défini avant. Par exemple dans mon cas simple ici, je voudrais definir b = 2, puis ensuite : f = fittype( 'ax+b', abscisses,ordonnees) , mais malheureusement lorsque je fais ceci, matlab ne prend pas en compte que b vaut 2 dans fittype et il me recalcule b qui nevaut plus 2 en sortie, alors que je l'ai déja et que je veux juste a sachant que b=2 et non pas autre valeur approximative ou éloignée de 2. Je voudrais résoudre absolument ce problème d'identification car j ai a peu pres une vingtaine de coefficient connus à entrer dans mon équation mais ils sont à rallonge ( et surtt à l 'affichage matlab ecrit parfois 0 alors que dans le format long ce meme coeff vaut 5.12578 e-005), et donc si moi à la main dans fittype je met 0 ca me fausse l'approximation.

    J'espere avoir été clair. Merci d'avance pour votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut syntaxe.
    en fait pour ceux qui n auraient pas compris, en résumé, j'aimerais écrire
    f = fittype( 'ax + b') et que ce soit equivalent à f = fittype( 'ax + 2' ) si avant de faire mon ajustement je sais que la valeur de b est 2 exactement et rien d'autre.

    voila tout. J ai une piste qui est de transformer une variable numérique en un string mais bon je n'ai pas résussi a le faire marcher.

  3. #3
    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
    La question est simple mais posée de façon bien compliquée.

    Objectif : évaluer b dans la chaine de caractères 'ax+b'.

    Quand tu dis que tu as une 1èere piste c'est bien de monter le code que tu as tenté, l'erreur éventuelle générée ou le résultat incorrect.

    Pour trouver la solution, quelques indices :
    Il s'agit :
    1. de transformer 2 du format double (num) en (2) string (str)

    2. de concaténer 2 chaines de caractères ('ax+' et le 2 transformé en 1)

  4. #4
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Bonjour
    j'ai peut-être trouvé un moyen. En fait, il ne faut pas chercher à donner une valeur à b et rien qu' à b au travers d'une variable. Il faut réecrire tout le texte. Je m'explique. Au lieu d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    f = fittype( 'ax + b')
    tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    d='ax + 2';
    f = fittype(d)
    et là, ça devrait marcher.
    J'espère que ça répond à ta question

    EDIT : mille excuses, j'avais écris f = fittype('d') alors que c'est f = fittype(d) . Merci Caro95470

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut mauvaise solution
    salut dam. Tout d'abord merci d'avoir cherché une solution. Malheureusement ce n'est pas cela que je voudrais faire . Je reprends ton cas.
    tu écris d = 'ax + 2' et ensuite fittype ( 'd' ). Ceci fonctionne mais ne résoud pas mon problème. Ce que je voudrais justement est d'éviter d'écrire d = 'ax +2'.
    Je ne veux pas rentrer de valeurs numériques à la main car si à la place de 2 j'avais 0.000878412 et que j'avais à écrire une équation avec 20 coefficients de ce type, ce serait trop long et source d'erreur.
    Pour continuer sur ta proposition et te faire comprendre le problème, admet-on que j'ai une matrice A et que 2 soit un des coefficients de ma matrice A, disons A(2,4) = 2;

    Alors je voudrais écrire un truc du style d = 'ax + A(2,4)' puis fittype (d). Mais cela ne fonctionne pas et je ne sais pas comment faire. Je cherche encore et je vais voir ce que fait la fonction eval. En attendant si vous pouvez m'aider je suis preneur. Merci beaucoup déjà pour l'aide.

    a+

  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
    Bon mes indices n'étaient apparemment pas suffisants
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    help num2str
    help cat %qui explique en fait comment se passer de cat dans ton cas
    Quant à eval, le dicton dit et répété maintes fois sur ce forum :
    eval=evil

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut ok
    bon caro j'ai suivi tes indices. en tout cas en utilisant strcat qui concatene des chaine de caractere et en utilisant num2str j'arrrive a créer ma chaine voulue.

    Merci bocou a vous

    voili :-)

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut re
    je n'avais pas vu que tu avais posté entre temps ! oui je n'utilise pas eval finalement...

    merci a+

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

Discussions similaires

  1. [VBA] syntaxe fonction domaine multicriteres
    Par christian81 dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/03/2007, 13h06
  2. [RegEx] Syntaxe fonction ereg()
    Par alain31tl dans le forum Langage
    Réponses: 20
    Dernier message: 26/09/2006, 01h44
  3. Verification syntaxe fonction javascript
    Par calitom dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 12/09/2006, 16h02
  4. [PHP-JS] syntaxe fonction verification select
    Par calitom dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2006, 14h53
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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