2016-10-03 2 views
0

J'essaie de placer des valeurs d'un tableau à un autre dans un certain ordre. Cependant, ils sont placés dans le tableau dans la même dimension que l'original.Manipulation de la matrice demension

nodeState = [2 8 5; 1 6 4; 9 0 5]; 

cState = []; 

cState = [nodeState(1,1) nodeState(1,2) nodeState(1,3) 
        nodeState(2,3) nodeState(3,3) nodeState(3,2) 
        nodeState(3,1) nodeState(2,1) nodeState(2,2)]; 

Ce que je me attends est pour mon cState d'être de cette demension

2 8 5 4 5 0 9 1 6

au lieu de cette demension

2  8  5 

4  5  0 

9  1  6 

Que dois-je faire?

Répondre

3

Si vous divisez une déclaration en plusieurs lignes, vous devez utiliser ... sinon Matlab interprète les retours Carriage comme une nouvelle ligne, de sorte qu'il crée une matrice au lieu d'un vecteur.

Il suffit de faire:

cState = [nodeState(1,1) nodeState(1,2) nodeState(1,3) ... 
      nodeState(2,3) nodeState(3,3) nodeState(3,2) ... 
      nodeState(3,1) nodeState(2,1) nodeState(2,2)]; 
+0

Wow ce qu'il est! ils ont besoin de mettre cela dans la documentation des débutants. – Jam1

+0

@ Jam1 En fait, bien que ce soit un peu difficile à trouver: https://www.mathworks.com/help/matlab/matlab_prog/symbol-reference.html#bsgigzp-29 - Voir * Définition des tableaux *. – rayryeng

+1

Je pense vraiment que Matlab devrait forcer les utilisateurs à utiliser un point-virgule ';' pour commencer une nouvelle ligne pour éviter les confusions comme celle-ci. Aussi, à mon avis, permettre l'utilisation de l'espace pour séparer les colonnes est une mauvaise idée. Les utilisateurs doivent être obligés d'utiliser la virgule ',' et le point-virgule ';' lors du remplissage des valeurs de la matrice. Je pense qu'ils ne le font pas pour des raisons de compatibilité, car cela briserait des tonnes de programmes existants. –