matlab

Neue Frage »

mathmal Auf diesen Beitrag antworten »
matlab
Meine Frage:
Was genau passiert hier. Hat jemand einen Link wo das erklärt wird?

size(b(:,1))

ans =

17165 1

>> size(a(:,1))

ans =

8924 1

>> c = a(b(:,1),1);
>> size(c)

ans =

17165 1

Meine Ideen:
Man setzt da eine viel größere Matrix in eine kleinere ein. Dort finden iwie Verlgeichsoperationen statt.
steveon Auf diesen Beitrag antworten »

hi,

b ist eine 17165 x n Matrix, wobei man über n nichts Näheres weiß.
a ist eine 8924 x m Matrix, wobei man m nicht näher kennt.

(zumindest verrätst du nix über n und m)

wenn du jetzt die matrix c definierst als

c = a(b(:,1),1)

so werden zunächst die Einträge

a(b(1,1),1) bis a(b(8924,1),1)

angelegt und dann hörtdie matrix a ja eigentlich auf...
aber matlab vergrößert die matrix a automatisch sodass auch die einträge

a(b(8925,1),1) bis a(b(17165,1),1)

in c eingetragen werden.

dann hat c also 17165 zeilen und 1 spalte und deswegen

size(c)=17165 1
zyko Auf diesen Beitrag antworten »

in c stehen nur die Werte von a, deren Indizes mit b übereinstimmen und zwar in der Reihenfolge, wie sie in b stehen.
Sei b=[2;1;2;1]
dann ist mit c=a(b)
c(1)=a(b(1))=a(2)
c(2)=a(b(2))=a(1)
c(3)=a(b(3))=a(2)
c(2)=a(b(4))=a(1)

Wenn aber b ein logical array ist z.B.
b=a>5;
dann ist b genauso groß wie a, enthält scheinbar 0 und 1, diese werden aber als false bzw. true interpretiert.
c=a(b)
liefert dann ein array, das in der Regel kleiner als a ist und nur die Elemente von a enthält, deren Wert>5 ist.
Logical Arrays haben den Vorteil, dass man damit schnelle logische Operationen durchführen kann:
b=a>5;
d=a<10;
e=b & d;
In e sind alle Elemente true für die die Werte von a zwischen 5 und 10 liegen
c=a(e);
liefert genau diese Werte und ignoriert alle anderen.
mathmal Auf diesen Beitrag antworten »

Zitat:
in c stehen nur die Werte von a, deren Indizes mit b übereinstimmen und zwar in der Reihenfolge, wie sie in b stehen. Sei b=[2;1;2;1] dann ist mit c=a(b) c(1)=a(b(1))=a(2) c(2)=a(b(2))=a(1) c(3)=a(b(3))=a(2) c(2)=a(b(4))=a(1)


Das Beispiel hat geholfen danke. Genau so scheint es zu sein.

Danke
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »