5 réponses
Utilise la commande reshape. ("help reshape" pour avoir les infos)
Si tu as
BC=[0 1;0 0;1 1]
reshape(BC,1,6) te donne [0 0 1 1 0 1] (il parcourt la matrice colonne par colonne).
Donc ce qu'il te faut faire c'est : reshape(BC',1,6)
Ainsi les lignes deviennent les colonnes et vice versa et la matrice sera parcourue dans le sens qui te convient.
Si tu as size(BC) = [N,2], alors tu dois faire reshape(BC',1,2*N).
Si vraiment tu veux utiliser une boucle malgré tout (ne serait-ce que pour l'aspect pédagogique...) il te faut faire :
[NI,NJ] = size(BC);
% créer un vecteur contenant autant de case que la matrice BC
Z = zeros(1,NI*NJ);
% pour chacune des lignes
for i = 1:NI
% parcours de la ligne
for j=1:NJ %ou bien : for j=1:2 si tu sais que NJ==2
Z(NJ*(i-1)+j) = BC(i,j);
end
end
Voilà.
J'espère que c'est bon comme ça.
Ciao.
Yababas.
Si tu as
BC=[0 1;0 0;1 1]
reshape(BC,1,6) te donne [0 0 1 1 0 1] (il parcourt la matrice colonne par colonne).
Donc ce qu'il te faut faire c'est : reshape(BC',1,6)
Ainsi les lignes deviennent les colonnes et vice versa et la matrice sera parcourue dans le sens qui te convient.
Si tu as size(BC) = [N,2], alors tu dois faire reshape(BC',1,2*N).
Si vraiment tu veux utiliser une boucle malgré tout (ne serait-ce que pour l'aspect pédagogique...) il te faut faire :
[NI,NJ] = size(BC);
% créer un vecteur contenant autant de case que la matrice BC
Z = zeros(1,NI*NJ);
% pour chacune des lignes
for i = 1:NI
% parcours de la ligne
for j=1:NJ %ou bien : for j=1:2 si tu sais que NJ==2
Z(NJ*(i-1)+j) = BC(i,j);
end
end
Voilà.
J'espère que c'est bon comme ça.
Ciao.
Yababas.
8 juil. 2011 à 14:25
BC = [1,0;1,4;1,0];
tmp = BC(:);
=>
tmp =[ 1 0 1 4 1 0 ]
bcp plus simple qu une boucle
25 juin 2015 à 16:40
17 janv. 2015 à 17:09