2015-03-27 7 views
13

Wir alle Matlab Doppelpunkt-Operator kennen eine lineare Sequenz zu erzeugen, dhVerhalten von Doppelpunkt-Operator (:) mit Matrix- oder Vektor Argumente

1:5 = [1 2 3 4 5] 

Nun fand ich, dass die Argumente des Doppelpunkt-Operator auch angewendet werden kann, zu Vektoren oder Matrizen. Allerdings verstehe ich die Definition dahinter nicht.

Beispiele

[1 2 3 4]:5 == [1 2 3 4 5] 

[1 2; 3 4]:3 == [1 2 3] 

Warum ist das?

Das zweite Argument kann auch Vektor oder Matrix sein.

Letztlich würde Ich mag Sequenzen wie

1:2:3:4:5 

verstehen, die in Matlab und [1 5] die übrigens völlig legal ist!

Hinweis 1:2:3:4:5:6 bleibt assoziativ, d. H. Geparst als ((1:2:3):4:5):6.

Also, was ist das Verhalten für den Doppelpunkt-Operator mit Matrix/Vektor-Argumente?

EDIT: korrigiert die Aussage der linken Assoziativität.

+1

Nach meiner Erfahrung (ich habe die Dokumentation nicht durchsucht), '[a b c]: [d e; f g] ist gleichbedeutend mit "a: d". Das heißt, der Doppelpunkt wählt das erste Element jedes Vektors oder jeder Matrix aus. –

+0

@LuisMendo: Ja, ich kann das experimentell bestätigen. Ich habe es in der Dokumentation nicht gefunden. – Jonas

Antwort

11

Die documentation für den Doppelpunkt-Operator sagt:

Wenn Sie Skalarwert Arrays angeben, MATLAB interpretiert j: i: k als j (1): i (1): k (1).

Ihr erstes Beispiel wird als 1:3 interpretiert, die zweite als 1:5

Ausdrücke mit mehr als zwei : werden analysiert linksassoziativen:

a:b:c:d:e==(a:b:c):d:e 

.

>> 1:2:3:4:5 

ans = 

    1  5 
+2

So erscheint es in der Dokumentation! (+1) –

+1

Guter Fang, ich habe die Dokumentation mehrmals gelesen, aber diesen Satz nicht gesehen. –

+0

aber Ihre letzte Behauptung ist nicht korrekt. -2: -1: 1: 5: 7 == [] aber Doppelpunkt ([- 2 -1 1], 5,7) = [-2, 3]. Auch (-2: -1): 1: 5: 7 ist anders als -2: -1: 1: 5: 7. Abschließend halte ich es für richtig, wie ich in der Frage gesagt habe: a: b: c: d: e wird geparst als ((a: b: c): d): e –

Verwandte Themen