7
votes

Matrice à la conversion de vecteur dans matlab

J'ai une matrice MXN et je voudrais convertir en un vecteur mnx1 avec tous les éléments de la ligne de la matrice comme les éléments du vecteur.

J'ai essayé d'utiliser Remodape code> mais je n'a pas réussi. P>

Voici le petit extrait de code et le résultat attendu. P>

S_prime= [ 0 1 1 0 1 1 1 1]


3 commentaires

Je n'ai pas Matlab ici pour l'essayer, mais vous pouvez essayer s_prime = s (:, :)


Cela ne fonctionne pas, il génère toujours une matrice de forme originale


Duplicate: Comment faire Vous concaténez les rangées d'une matrice dans un vecteur à Matlab? , Le moyen le plus simple de convertir matrice en un vecteur de rangée


4 Réponses :


1
votes
reshape(S',1,[])

3 commentaires

Ce n'est pas ce que je cherche, c'est semblable à écrire S (:) Je cherche une concaténation sage en ligne dans un vecteur.


Ok, cela me fait me demander encore plus sur le problème initial, mais simplement transposer s et utilisez ensuite les méthodes. Je vais éditer ma réponse.


Je pense que le problème était que juste pour remodeler S comme vous l'avez donné des retours [0 1 1 1 1 0 1 1], qui est différent de la sélection de lignes de ligne plutôt que de la sélection de la colonne.



4
votes

Remodape prend les éléments de la colonne d'éléments, alors transpose S avant de remodeler. XXX


1 commentaires

Merci Adrian, merci beaucoup pour votre temps et votre aide. Je me demande pourquoi je n'ai pas essayé de prendre la transposition. Merci beaucoup



10
votes

Vous pouvez essayer de transposer s et d'utiliser (:) xxx

ou pour une ligne vectorielle: xxx


3 commentaires

Est-ce que c'est S (:) 'correct pour un vecteur de ligne? Je pense comme une doublure, F '(:)' est la bonne réponse (au moins tester avec octave).


Voici la page de documentation d'octave à propos de cette fonctionnalité: http://www.gnu.org/software/octave/doc/interpreter/index-exp Ressions.html # Index-Expressions


J'ai eu la même expérience que Norbert. S '(:)' a donné un vecteur de ligne. S (:) 'a donné un vecteur de rangée, mais les éléments ont été ajoutés à la colonne de la colonne, pas ce que je voulais.



0
votes

octave a une très belle fonction: VEC ().

Le document à http://www.mathcs.emory.edu/~nagy/courses/fall10/515/kroneckerintro.pdf stipule ce qui suit. P>

vector x = vec(X) 
can be obtained with the MATLAB statement: x = reshape(X, q*n, 1)


0 commentaires