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

Signal Discussion :

Réorganisation de matrice


Sujet :

Signal

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 114
    Points : 49
    Points
    49
    Par défaut Réorganisation de matrice
    Bonjour,
    Je cherche de réorganiser ma matrice, j'ai ma matrice d'origine imx(50,n)
    imx(indf,n), indf : indice de Fréquence et n : indice des colonnes.

    je balayer la fréquence 1:nFreq, et n=5:nfin (la nfin=8), je prend colonne par colonne, chaque fois la valeur dans mon colonne change , je prendre la suite de nouvelle valeur.

    vous pouvez regarder le fichier ci-joint, pour comprendre mieux ma question.

    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    j'ai beau relire ton message et regarder ton fichier excel, je ne vois pas quelle opération tu souhaites effectuer.
    Est ce que tu peux détailler, ou donner un autre exemple?
    Peut être peut tu donner un pseudo code tel que tu l'imagines, afin que l'on puisse t'aider à l'écrire en Matlab.

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 114
    Points : 49
    Points
    49
    Par défaut
    c'est à peu prés l'idée
    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
     
    n=5;% balayage premiere colonne
    imx_modif=zeros(nFreq,4)
    for indf=1:nFreq % Fréquence 1 à 50
     
     
     
        if imx(indf,n)==n
            imx_modif(indf,n)=imx(indf,n);
     
        elseif imx(indf,n)~=0  % la valeur dans la colonne change alors je vais suivre sa colonne
     
            x1=imx(indf,n); % premier changement de valeur
     
            for indf1=indf:nFreq
                if imx(indf1,x1)==x1
                    imx_modif(indf1,x1)=imx(indf1,x1);
     
                end % 2éme changement de valeur
                x2=imx(indf1,x1);
     
                if indf1==nFreq;break;end 
     
            end
     
     
     
        for indf2=indf1:nFreq
            if imx(indf2,x2)==x2
                imx_modif(indf2,x2)=imx(indf2,x2);
     
            else  % 3éme changement de valeur
     
                x3=imx(indf2,x2);
                if indf1==nFreq;break;end 
            end
        end 
     
            for indf3=indf2:nFreq
                if imx(indf2,x3)==x3
                    imx_modif(indf2,x)=imx(indf2,x3);
     
                else
                    disp('plus de 3 changement ajouter une boucle')
                    if indf1==nFreq;break;end 
                end
            end
        end
    end
    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
     
    imx=
    0    0    0    0
    0    0    0    0
    0    0    0    0
    0    0    0    0
    0    0    0    0
    0    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    0    0    0
    5    6    0    0
    5    6    0    0
    6    5    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    6    0    0
    5    7    6    0
    5    6    7    8
    5    6    7    8
    5    6    8    7
    5    6    7    8
    5    6    7    8
    5    6    7    8
    5    7    6    8
    5    6    7    8
    5    6    7    8
    5    6    7    8
    5    6    7    8
    5    6    7    8
    5    6    7    8
    5    6    7    8
    5    6    7    8

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 114
    Points : 49
    Points
    49
    Par défaut
    plus simple pour bien expliquer l'idée


    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
     
    x=[5 5 5 5 6 5 5 5 5];
    y=[0 0 6 6 5 6 6 6 6];
    n=5;
    sortir=0;
    for i=1:9
        if x(i)==n
            X(i)=x(i)
        else
            X(i)=y(i);
            n1=x(i);
            sortir=1;
            indf=i+1;
        end
     
        if sortir==1
          break
        end
    end
     
    for j=indf:9
        if y(j)==n1
            X(j)=y(j)
        end
     
    end
    mais supposant que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x=[5 5 5 5 6 5 5 5 5 5];
    y=[0 0 0 0 5 6 6 6 7 8];
    z=[0 0 0 0 0 0 0 7 7 7];
    je cherche de relier les valeurs, colonne x, je commence x(1)=5,je la garde, puis x(2)=5, je la garde,...., puis x(5)=6la je change je prend colonne y, y(6)=6, je la garde, y(7)=6 je la garde, ..y(8)=7, je change je prend colonne z, z(9)=7 je la garde , et c'est la fin i=9.

    résultats X=[5 5 5 5 5 6 6 6 7 7].


    une fois je fini avec la première colonne x, je prend la 2ème ici y
    Y=[0 0 0 0 6 5 5 5 5 ] puis Z=[0 0 0 0 0 0 7 7 7]

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Comme FLB, je suis un peu perdu dans ce que tu souhaites faire exactement
    Pour clarifier tes explications floues, tu nous donnes ce que tu as essayé de coder, mais j'imagine que ces codes sont faux sinon tu ne demanderais pas d'aide Et tu n'expliques pas en quoi ils le sont...
    Donc c'est un peu dur d'aider à partir de ça.

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 114
    Points : 49
    Points
    49
    Par défaut
    oui désolé, c'est difficile d'expliquer exactement qu'est-ce que je cherche, mais bon j’essaye le plus max de le faire,

    imx c'est une matrice (50,11)
    chaque colonne représente un mode, j'ai fais un petit figure, pour montrer l'idée.
    j’espère j'ai bien expliquer cette fois

    dans la figure, les points sont les valeurs d'origine de ma matrice imx, et les ligne tracé avec la main, c'est qu'est-ce que je voudrai le faire avec matlab.

    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
     
     imx(:,5:8)
     
    ans =
     
         0     0     0     0
         0     0     0     0
         0     0     0     0
         0     0     0     0
         0     0     0     0
         0     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     0     0     0
         5     6     0     0
         5     6     0     0
         6     5     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     6     0     0
         5     7     6     0
         5     6     7     8
         5     6     7     8
         5     6     8     7
         5     6     7     8
         5     6     7     8
         5     6     7     8
         5     7     6     8
         5     6     7     8
         5     6     7     8
         5     6     7     8
         5     6     7     8
         5     6     7     8
         5     6     7     8
         5     6     7     8
         5     6     7     8
    Images attachées Images attachées  

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 114
    Points : 49
    Points
    49
    Par défaut
    Bonsoir,
    j’ai fais ce petit code, j'espère que vous pouvez mieux optimiser ce code, j'éspére l'idée denvue un peu claire ?!

    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
    65
     
    clear,clc
    load data.mat
    load f.mat
     
    n=5;
    sortir=0;
     
    for i=1:50
        if x(i)~=0
            disp(x(i))
     
            if x(i)==n
                X(i,1)=x(i,1)
            else
              X(i,1)=y(i+1,1);
                n1=x(i);
                sortir=1;
                indf=i+1;
            end
        end
        if sortir==1, break,end
    end
     
    while y(indf)-n1 == 0
     
     
        X(indf,1)=y(indf,1);
        if indf==50,break, end
        indf=indf+1;
        n2=y(indf);
     
    end
     
    indf=indf+1;
     X(indf,1)=y(indf,1);
     
    while z(indf,1)-n2==0
     
        X(indf,1)=z(indf,1);%
        if indf==50,break, end
        indf=indf+1;
        n3=z(indf);
     
    end
     
     
      indf=indf;
     
    while z(indf,1)-n3==0
     
        X(indf,1)=f(indf,1);%
        if indf==50,break, end
        indf=indf+1;
        n3=z(indf);
     
     
     
    end
    %
    clf,plot(x,'.r'),hold on
    plot(y,'.g'),hold on
    plot(z,'.k'),hold on
    plot(f,'.b'),hold on
    plot(X,'^k')
    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
    X =
     
         0
         0
         0
         0
         0
         0
         5
         5
         5
         5
         5
         5
         5
         5
         5
         5
         5
         5
         5
         5
         6
         6
         6
         6
         6
         6
         6
         6
         6
         6
         6
         6
         6
         6
         0
         7
         7
         7
         8
         8
         8
         8
         8
         8
         8
         8
         8
         8
         8
         8
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. VBA: Matrice réorganisée aléatoirement, en Random
    Par vatfer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/08/2010, 00h02
  2. Réorganisation de matrices
    Par lilyla dans le forum MATLAB
    Réponses: 2
    Dernier message: 05/12/2007, 10h27
  3. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44
  4. Gestion de matrice
    Par bzd dans le forum C
    Réponses: 4
    Dernier message: 12/08/2002, 18h19
  5. Comment définir le type matrice ?
    Par charly dans le forum Langage
    Réponses: 7
    Dernier message: 15/06/2002, 21h01

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