rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[MATLAB] transformer une matrice en vecteur

yann, le vendredi 22 février 2008 à 11:27:02
Bonjour,

Voila j'ai un petit problème à résoudre avec matlab, j'ai une matrice (N,2) avec N etant un nombre variable de lignes.
Je souhaiterai stocker les valeurs de cette matrice dans un vecteur ligne, en utilisant une boucle.

Pour l'instant ca donne a peu pres ca:

BC=[0 1;0 0;1 1]

For i = 1:1:N
BCvecteur = [BC(i,:)]
end

Avec ceci, j'extrais chaque ligne de la matrice,
BCvecteur =

0 1


BCvecteur =

0 0


BCvecteur =

1 1

A ce stade, je souhaiterai obtenir un vecteur BCvecteur = [0 1 0 0 1 1].

Merci pour votre aide, bonne journée
Configuration: Windows Vista
Internet Explorer 7.0
Répondre à yann  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
yababas, le vendredi 22 février 2008 à 11:46:53
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.
Répondre à yababas

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Char Snipeur, le vendredi 22 février 2008 à 11:49:17
Utilise la concaténation :
R=[];
for i=1:N
    R=[R BC(i,:)];
end

Salutation ! Quand on sait pas, on touche pas !JBT
Char Snipeur
Répondre à Char Snipeur

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
yann, le vendredi 22 février 2008 à 11:59:38
Ok merci bien pour votre aide,

bonne journée
Répondre à yann

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Dister, le mardi 6 mai 2008 à 15:41:43
Comment on fait le chemain inverse , de vecteur vers une matrice
Ex: A=[ a b c d e f g h i] je vais la transformer en
B=[a b c d,e f g h i]
Merci
Répondre à Dister

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Char Snipeur, le mardi 6 mai 2008 à 15:59:21
B=[A(1:4);A(5:8)]; Salutation ! avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur
Répondre à Char Snipeur
Logiciels pertinents trouvés dans les téléchargements
Télécharger Chocoflop   0.87Chocoflop - Des éditeurs d'images, il en existe des tas sur le web, notamment pour Mac. Chocoflop en est un et non des moindres dans ce...Catégorie: Graphisme
Licence: Freeware/gratuit
Télécharger Inkscape 0.46Inkscape - Inkscape est un logiciel libre d'édition de graphismes vectoriels, doté de capacités similaires à Illustrator, Freehand,...Catégorie: Dessin
Licence: Open Source
Télécharger Transform XP to Vista 1.2Transform XP to Vista - Si vous cherchez quelque chose de nouveau pour personnaliser l'interface de votre Windows XP, mais que vous n'avez pas le...Catégorie: Personnalisation
Licence: Freeware/gratuit
Télécharger Sodipodi 0.34Sodipodi - Sodipodi est une application de dessin vectoriel pour Linux/Unix et Windows utilisant le format W3C SVG comme format natif....Catégorie: Dessin
Licence: Open Source
Plus de logiciels gratuits sur « [MATLAB] transformer une matrice en vecteur »