[Matlab] Erreur de dimension?
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

[Matlab] Erreur de dimension?



  1. #1
    invite5d061642

    [Matlab] Erreur de dimension?


    ------

    בס"ד
    Bonjour,

    Lorsque j'essaie d'appliquer un code dans Matlab, je reçois le message d'erreur suivant:

    Error using *
    Inner matrix dimensions must agree.

    Error in euler (line 29)
    miu ( n , : ) = miu ( n-1 , : ) + nu ( n-1 , : ) * dt ;


    Semble annodin, mais j'ai essayé tout ce que je savais et n'ai pas trouvé comment arranger ça:
    Ajouter un point devant * redonne le même message d'erreur;
    n est défini comme suit: for n = 2 : length(t), il ne devrait donc pas y avoir de problème avec n-1 ;
    Lorsque je mets whos miu, whos nu et whos dt, j'obtiens size = 8 x 101 pour les trois.

    Je vous joins le code entier, si ça peut aider:
    Code:
    function [unew,vnew] = euler (miu,nu)
    
    global t0 t N x u v fu fd fr fl gu gd gr gl ;
    
    t0 = ones ( N+2 , x+1 ) ;
    t = t0 : 10 * t0 ;
    dt = ( 10 * t0 - t0 ) / .1 ;
    
    miu = u ;
    nu = v ;
    
    for n = 2 : length(t)
            
        for i = 1 : N+1
        for j = 1 : x
            
          v(i,j) = gradient ( u(i,j) , t ) ; 
        
        h = [ v(i,j)
             fu(i,j) + fd(i,j) + fr(i,j) + fl(i,j) + gu(i,j) + gd(i,j) + gr(i,j) + gl(i,j) ] ;
        
        end
        end
    
        miu ( n , : ) = miu ( n-1 , : ) + nu ( n-1 , : ) * dt ;
        nu ( n , : ) = nu ( n-1 , : ) + h * dt ;
        
    end
    
     unew = miu ( n , : ) ;
     vnew = nu ( n , : ) ;
     
    end
    Et vous remercie d'avance ,

    -----
    Dernière modification par JPL ; 20/11/2013 à 17h33. Motif: Correction de balise : il fallait utiliser Code.

  2. #2
    inviteb9f49292

    Re : [Matlab] Erreur de dimension?

    Sans trop chercher à comprendre ce que tu veux faire, il me semble que tu n'es pas au clair avec la manipulation des matrices avec MATLAB, quelques exemples:

    - intervertir les opérateurs "*" et ".*", le premier est la multiplication matricielle classique (il faut donc que le nb de colonnes de l'opérande de gauche soit égale au nb de lignes de l'opérande de droite, et vice verse), sauf si un des opérandes est un scalaire, alors "*" est une multiplication scalaire. ".*" est la multiplication éléments par éléments, il faut donc que les deux opérandes aient exactement les même dimensions.

    - si "nu" est une matrice, alors "nu(n, " est la n-ième ligne de la matrice, sa taille est donc 1 x nb de colonne de "nu", de la même manière, "nu(:, n)" est la n-ième colonne, "nu(n:m, k:l)" est la sous-matrice constituées des éléments se trouvant aux lignes n à m, colonnes k à l, donc de dimension (m-n+1)x(k-l+1).

    Je pense que tu as suffisament d'éléments pour corriger ton erreur.

Discussions similaires

  1. matlab erreur!
    Par inviteddea7c56 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 04/11/2010, 20h45
  2. Erreur de Matlab
    Par pat7111 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 10/03/2010, 17h16
  3. Sur Matlab tracer de densité de probabilité de la loi normale générale à n-dimension
    Par invite9f4a2e17 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 02/02/2010, 12h56
  4. erreur sur matlab
    Par invite8d389202 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/11/2009, 07h41
  5. erreur MATLAB: "Subscripted assignment dimension mismatch"
    Par invitef09df8a8 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 22/04/2009, 09h16