2012-04-01 8 views
0

Nun, ich weiß nicht, ob ich den genauen Begriff verwendet. Ich habe versucht, eine Antwort im Netz zu finden. Hier ist das, was ich brauche: Ich habe einen matixKonvertieren eindimensionale Matrix in zwei Dimensionen in Matlab

       a = 1 4 7 

            2 5 8 

            3 6 9 

Wenn ich eine (4) der Wert 4. So wird es erste Spalte oben lesen, dann auf Buttom weiterhin neben .... Ich don Ich weiß nicht warum. Jedoch,

Was ich brauche, ist es mit zwei Indizes zu nennen. Als Zeile und Spalte:

        a(1,2)= 4 

oder noch besser, wenn ich es auf folgende Weise aufrufen:

        a{1}(2)=4 

Was dieser Prozess wirklich (lernen wollen) genannt ist und wie in Matlab durchzuführen. Ich dachte an eine Schleife. Gibt es eine eingebaute Funktion Vielen Dank

Prüfen Sie dies: a =

18 18 16 18 18 18 16  0  0  0 
16 16 18  0 18 16  0 18 18 16 
18  0 18 18  0 16  0  0  0 18 
18  0 18 18 16  0 16  0 18 18 

>> a(4) 
    ans = 
    18 

>> a(5) 
    ans = 
    18 

>> a(10) 
    ans = 
    18 

Ich versuchte reshape. es wird umformatiert und konvertiert nicht in 2 indezes

+0

Das sieht nicht wie ein Vektor für mich. –

+0

was ist es @Oli? Ich sagte, bevor ich nicht weiß, ob ich die richtigen Begriffe verwende – pac

+0

Es sieht aus wie eine Matrix für mich. –

Antwort

1

Wenn Sie bereits eine Matrix bekam, haben Sie bereits Zugriff darauf mit zwei Indizes:

wenn Sie

      a = 1 4 7 

           2 5 8 

           3 6 9 

haben Sie darauf zugreifen können als

a(3,2) = 6 

Die Indizierung erfolgt jedoch von oben links, Zeile zuerst und dann Spalte. Wenn Sie auf die "4" in der Matrix bekommen wollen dann tun:

a(1,2) 
+0

Sie sind richtig @Nate gut Ich habe versucht, dass es jetzt nicht funktioniert, ja es funktioniert. Aber wie kommt es, wenn es eine Matrix mit 2 Indices ist, die ein (1) akzeptiert !! – pac

+0

Das ist nur eine der Funktionen von Matlab :). Wenn Sie über einen Index darauf zugreifen, wird der Wert übernommen, als ob Sie die Spalten in einem Vektor gestapelt hätten. – Nate

+0

Um den Kommentar von @ Nate zu erörtern - ein Grund, warum Matrizen sowohl 'A (i, j, k)' Indizierung und 'A (i)' Indexierung unterstützen, ist so, dass Sie immer noch jedes Element durchlaufen können, ohne Schleifen verschachteln zu müssen. Zum Beispiel "für i = 1: Produkt (Größe (A))". Beachten Sie, dass die meisten MATLAB-Funktionen Matrix-Eingaben akzeptieren, also sollten Sie dies nie in der Praxis tun müssen - aber Sie ** können **. ;) –

1

Um einen Vektor/Matrix/Array umzuformen, verwenden Sie reshape().

0

Oder man könnte es als ein eindimensionales Array lassen und verwenden nur

((Column - 1) * 3) + Row - 1) als der Index. 3 weil es drei Spalten gibt.

NB A (4) = 4 ist wegen der Art, sie Spalten und Reihen in dem eindimensionalen Array angeordnet haben, ist dein "geladen", wie

R1C1, R2C1, R3C1, R1C2 etc wher R Zeile und C-Säule wenn das unbequem ist, dann müssen Sie nur zu bekommen, was die Array-Reihe füllt dann Spalte so dass die obige Abbildung wäre

((Row - 1) * 3) + Column - 1) 

Sie Matlab nicht so obigen Code wird davon ausgegangen Array bei 0 beginnt, wenn nicht füge einfach 1 hinzu.

+0

so wie konvertieren? Ich möchte es so nennen, dass es von einer anderen Funktion verwendet wird, die die zweidimensionale Konvention – pac

+0

verwendet. Das obige ist die Umwandlung. GetValue (Zeile, Col) = a [((Col-1) * 3) + Zeile - 1) –

+0

???Nicht definierte Funktion oder Variable 'Col'. – pac