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 :

Subscripted assignment dimension mismatch


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Par défaut Subscripted assignment dimension mismatch
    Bonjour,

    Voici mon code:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    
    function Amplitudes_vibrations(varargin)
    
    global Nbr_elements Inertie Raideur Amortissement Frequence_triees Nbr_elements_avant_M Nbr_elements_M
    
    Ordre_allumage = evalin('base','Ordre_allumage');
    Nbr_cylindres = evalin('base','Nbr_cylindres');
    Aiq(1,:) = evalin('base','Aiq');
    Biq(1,:) = evalin('base','Biq');
    
    Alpha_gene = 720/Nbr_cylindres;
    Alpha=zeros(Nbr_elements,1);
    for i = (Nbr_elements_avant_M+1) : ((Nbr_elements_avant_M+1)+Nbr_elements_M)
        for j = 1 : Nbr_cylindres
            if (i-Nbr_elements_avant_M) == Ordre_allumage(j)
                Alpha(i) = Alpha_gene * ( j-1 );
            end
        end
    end
    assignin('base','Alpharem',Alpha)
    for i = 1 : Nbr_elements
        for q = 0.5:0.5:2
            Aiq(i,q*2) = Aiq(1,q*2) * cos( q * Alpha(i) ) + Biq(1,q*2) * sin( q * Alpha(i) );
            Biq(i,q*2) = Aiq(1,q*2) * sin( q * Alpha(i) ) + Biq(1,q*2) * cos( q * Alpha(i) );
        end
    end
    
    Y = [Aiq;Biq];
    
    Omega = Frequence_triees * pi / 30;
    
    for w = 1:Nbr_elements
        
        t = 0:(4*pi/(10*Omega(w))):(4*pi/Omega(w));
        
        for q = 0.5:0.5:2
            a = Raideur - Inertie * Omega(w) * Omega(w) * q * q;
            b = Amortissement * Omega(w) * q;
        end
    
        Matrice_alpha = [a -b;b a];
    
        X = inv(Matrice_alpha) * Y;
        Xq = X(1:Nbr_elements,:);
        Yq = X(Nbr_elements+1:2*Nbr_elements,:);
    
        for i = 1 : Nbr_elements
            for q = 0.5:0.5:2
                Teta_q(i,q*2,:) = Xq(i,q*2) * sin( q * Omega(w) * t) + Yq(i,q*2) * cos( q * Omega(w) * t);
            end
        end
        
        for i = 1:Nbr_elements
            Teta(i) = sum(Teta_q(i,:));
        end
        
        %Matrice_Omega(w,1) = Teta_q(w);
        Matrice_Omega(w,2) = Teta(w);
    end
    
    for i = 1:(Nbr_elements-1)
        Delta_Teta(i) = Teta(i+1) - Teta(i)
    end
    et voici mon erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    ? Subscripted assignment dimension mismatch.
     
    Error in ==> Amplitudes_vibrations at 48
                Teta_q(i,q*2,:) = Xq(i,q*2) * sin( q * Omega(w) * t) + Yq(i,q*2) * cos( q * Omega(w) * t);
     
    Error in ==> Calculs_test at 21
    Amplitudes_vibrations
    J'ai beau relire mon code, je ne trouve l'erreur dans mon expression, quelqu'un peut-il me dire quelle matrice pose problème

  2. #2
    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
    Par défaut
    Bonjour,

    pour l'explication de l'erreur, voir la :
    Subscripted assignment dimension mismatch.

    Pour résoudre le problème, il faut vérifier les dimensions de toutes les variables utilisée dans cette ligne et vérifier que les différentes opérations donnent un résultat aux dimensions attendues. Pour cela, tu peux mettre un breakpoint sur la ligne qui pose problème (clic à gauche de la ligne 48 de la fonction Amplitudes_vibrations) puis lancer le code et vérifier les dimensions lorsque MATLAB a atteint cette ligne.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre confirmé Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Par défaut
    Justement, le problème c'est que je respecte la condition "nombre de terme de droite = nombre de terme de gauche".

    Teta_q(i,q*2,: )=Xq(i,q*2)*sin(q*Omega(w)*t)+Yq(i,q*2)*cos(q*Omega(w) t);

    à gauche, les " : " indique que je libère le nombre de case nécessaire au stockage, et à droite le nombre de cases est défini pas " t ", donc je ne comprends pas où est le problème.

    Quelqu'un peut-il m'expliquer ?

  4. #4
    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
    Par défaut
    As-tu essayé d'utiliser le debugger (ma petite histoire avec les breakpoints)?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre confirmé Avatar de Youni92
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 178
    Par défaut
    Ok je viens de le faire, l'erreur c'est que Omega avait une valeur "imaginaire" (a+ib), et donc quand je définissait t, bah ça me*dais.

    Merci pour ton aide

Discussions similaires

  1. Erreur Subscripted assignment dimension mismatch.
    Par Marie_7 dans le forum MATLAB
    Réponses: 1
    Dernier message: 05/06/2012, 11h45
  2. Subscripted assignment dimension mismatch.
    Par syki.mail dans le forum Images
    Réponses: 13
    Dernier message: 29/03/2012, 12h17
  3. erreur "Subscripted assignment dimension mismatch.
    Par lena_87 dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/04/2009, 22h13
  4. Réponses: 4
    Dernier message: 28/04/2008, 18h06
  5. Réponses: 8
    Dernier message: 27/04/2007, 19h57

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