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 :

Problème avec message erreur


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut Problème avec message erreur
    Bonjour,

    J' ai programme une fonction "john" qui doit effectuer des calculs en fonction de plusieurs paramétres fixes et variables "t" et "s".

    En analysant mon programme, on vois bient que le vecteur "t" est de longuer 200, "s" aussi. le "i" de "for", varie bien de 1 jusqu'à 200, donc pourquoi le message erreur en bas ?? j'ai passé des heures à essayer de trouver une solution, en vain. Merci de votre aide!!!
    le CODE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    n=200;
    t=linspace(0,5/12,n)';
    s=linspace(0,100,n)';
    J=0;
     
    for i=1:n
      J(i)=john(s(i),50,0.1,0.4,t(i),5/12)
    end

    Citation Envoyé par MATLAB
    In an assignment A(I) = B, the number of elements in B and I must be the same.


    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Salut,

    Désolé, je ne peux pas tester ton code mais il faut que tu initialises "J" comme ceci :

    De manière à ce que l'allocation en mémoire fasse gagner du temps à matlab.

    Ensuite pour ton message d'erreur, généralement tu le résous en utilisant la fonction "size" sur tout les paramètres avant de faire le calcul afin d'être sûr que tu n'aies pas de problème de dimension comme ici.

    Voilà, j'espère que ça t'aidera

    Christophe

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par Udani Voir le message
    In an assignment A(I) = B, the number of elements in B and I must be the same.
    Voir la : In an assignment A(I) = B, the number of elements in B and I must be the same.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Merci , maintenant ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function johnson2=john_plot(N)
     
    n=N;
     
    t=linspace(0,5/12,n)';
    s=linspace(0,100,n)';
    J=zeros(n,1);
     
    for i=1:n
      J(i)=john(s(i),50,0.1,0.4,t(i),5/12)
    end
     
    Z1=J;
    save johnson;
    Aus=[t s Z1 ];
    save john.dat Aus -ascii;
    plot(s,Z1,'b');
    axis([0 101 0 50]);  
    legend('Methode de John');

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    problème résolu, nouveau problème!!
    donc j'ai reussi à faire marche la function "john" comme fonction de temps 't" et d'espace "s". La j'iamerais faire une representation à 3 Dimension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function plot3d=plot3d_joh(N)
     
    n=N;
    sigma = 0.4; 
    K = 50; 
    r = 0.1; 
    T = 5/12; 
    Svals = linspace(0,100,n);
    tvals = linspace(0,5/12,n);
     
    [Smat,tmat]=meshgrid(Svals,tvals);
     
    P=johnson(Smat,K,r,sigma,tmat,T); %la fonction john(So, K, r, sig, t, T)
     
    mesh(Smat,tmat,P);
     
    xlabel('S'),ylabel('t'),zlabel('P(S,t)','rot',0);
    box off;
    Message erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    EDU» plot3d_john(20)
    ??? Error using ==> surface
    Matrix dimensions must agree.
     
    Error in ==> C:\MATLAB_SE_5.3\toolbox\matlab\graph3d\mesh.m
    On line 93  ==>       hh = surface(x,y,z,'FaceColor',fc,'EdgeColor','flat', 'FaceLighting', 'none', 'EdgeLighting', 'flat');
     
    Error in ==> C:\MATLAB_SE_5.3\work\plot3D_john.m
    On line 17  ==> mesh(Smat,tmat,P);
    je ne sais plus quoi faire, car j'ai testé un autre fonction et ca marche!
    Merci de votre aide.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    quelles sont les dimensions de Smat,tmat et P avant l'appel de mesh? (puisque apparemment c'est un problème de dimension)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    P=johnson(Smat,K,r,sigma,tmat,T); %la fonction john(So, K, r, sig, t, T)
    size(Smat)
    size(tmat)
    size(P)
    mesh(Smat,tmat,P);

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    bonjour,

    es dimensions sont:

    size(Smat) = 20 20
    size(tmat) = 20 20
    size(P) = 1 1

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Donc, là tu devrais te rendre compte qu'il y a un problème : P devrait être une matrice de dimension 20 par 20...


    Dans ta fonction Johnson, as-tu pris en compte qu'elle devait te retourner une variable de la taille de Smat et tmat?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par magelan Voir le message
    Donc, là tu devrais te rendre compte qu'il y a un problème : P devrait être une matrice de dimension 20 par 20...


    Dans ta fonction Johnson, as-tu pris en compte qu'elle devait te retourner une variable de la taille de Smat et tmat?
    c'est vrais ! sauf que d'habitude, la fonction johnson, peux prendre des valeurs à partir d'un vecteur. Comment peut-elle prendre des valeurs d'une matrice (deux matrices Smat et tmat , les deux de dimensions 20x20)

    j'ai déja essayé ceci pour plot de dimension 2, mais ca marche pas pour la dimension 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    P=zeros(n,1);
    for i=1:n
       P=johnson(Smat(i),K,r,sigma,tmat(i),T);
    end
    ??

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    A partir de là, c'est un problème de conception mais ce n'est pas directement lié à matlab.

    Mais ne sachant pas ce que tu fais dans ta fonction johnson, c'est à toi de réfléchir à ce que tu calcules et à ce que tu veux afficher.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 31
    Points : 12
    Points
    12
    Par défaut merci
    oui, je crois aussi que je devrais revoir la conception de mes programmes.
    Merci pour votre aide et vos conseils!
    Je vous tiens au courant.

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

Discussions similaires

  1. Problème avec message d'erreur
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 15/10/2007, 15h21
  2. Problème avec une erreur d'exception inconnue
    Par yoyo72 dans le forum Delphi
    Réponses: 5
    Dernier message: 09/08/2006, 11h52
  3. Problème avec l'erreur 3464 sur access
    Par somalien10 dans le forum Access
    Réponses: 10
    Dernier message: 16/05/2006, 09h30
  4. Problème avec sizeof(...) : erreur de taille
    Par Invité dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 06/05/2006, 12h53
  5. Problème avec Message (Oracle 10g)
    Par Gouzoul dans le forum Oracle
    Réponses: 2
    Dernier message: 13/04/2006, 16h00

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