die Aufteilung einer Matrix in Spalte Vektoren und speichern in einem array

Meine Frage hat zwei Teile:

  1. Split eine gegebene matrix in Ihre Spalten
  2. Diese Spalten gespeichert werden sollen in ein array

eg,

A = [1 3 5 
     3 5 7
     4 5 7
     6 8 9]

Nun, ich weiß die Lösung zum ersten Teil:

den Spalten sind erhältlich über
tempCol = A(:,iter), where iter = 1:end

Bezug auf den zweiten Teil des Problems ist, würde ich gerne (etwas wie diese, vielleicht eine andere Indizierung in arraySplit array), sondern eine ganze Spalte Ein, die gespeichert werden soll, die auf eine einzelne index in splitArray:

arraySplit(1) = A(:,1)
arraySplit(2) = A(:,2)

und so weiter...

für die Beispiel-matrix A,

arraySplit(1) sollte mir [ 1 3 4 6 ]'

arraySplit(2) sollte mir [ 3 5 5 8 ]'

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, weisen Sie den Spalten-Vektor für mein array.

In an assignment  A(I) = B, the number of elements in B and I must be the same.

Mache ich die Zuweisung und den Zugriff auf arraySplit falsch, bitte helfen Sie mir ...

  • Eine matrix ist bereits ein array von Vektoren, warum brauchen Sie diese unnötige arraySplit Raffinesse?
  • Was in der Regel Streiks neuen matlab-Benutzer ist das komplette fehlen von Zeigern: siehe dieser und dieser Fragen. Abgesehen von cell-arrays, die sind gar nicht nützlich, imho, Sie haben zu Leben, ohne Zeiger und passen Sie Ihre coding-Stil zu dieser Einschränkung. In der Tat, was Sie fordert, ist ein array von Zeigern, so dass A(i,j)==arraySplit(j)(i) aber dies ist nicht möglich, mit () Klammern.
  • Ich finde jeden Teil Ihres Kommentars falsch: 1) Nicht alle "neuen MATLAB-Benutzer" kommen aus einem C-hintergrund, so zu sagen, dass Sie fehlen, die die Funktionalität von Speicheradressen und Zeiger ist nicht unbedingt wahr. 2) cell-arrays sind SEHR nützlich für die Speicherung von Daten der Variablen Typ als eine Sammlung, wie zahlen und Zeichenketten oder Vektoren unterschiedlicher Länge. 3) Warum sind Sie sicher, dass die OP will, Zeiger anstatt einer Kopie dieser Vektoren?
  • tut mir Leid für die verursacht so viel Missbilligung von Ihnen. Im Grunde hast du Recht, mein kurzer Kommentar meint, dass, wenn der OP fragt "eine ganze Spalte Ein, die gespeichert werden soll, die auf eine einzelne index in splitArray" er verlangt für ein C-wie Arrays von arrays. Wie das, was bezüglich cell-arrays, die ich geschrieben haben soll, dass Sie nicht so nützlich, wie Zeiger ersetzt. Der Sinn meines Kommentars war einfach zu machen, dass die OP, die in MATLAB-Daten-Modell für Matrizen (und N-dimensionales array) ist sehr Verschieden von C und numpy.
  • Ich wollte nicht zu klingen aggressiv, aber es war wichtig, darauf hinzuweisen, diese Informationen, um nicht in die Irre die OP.
InformationsquelleAutor prashant | 2012-09-04
Schreibe einen Kommentar