Vektor in Matrix positionieren < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:29 Fr 15.05.2009 | Autor: | Matz |
Hallo, liebe Leute,
ich habe folgendes Problem.
Es steht eine Matrix M (nicht-quadratisch) bereit.
Für eine Berechnung habe ich mittels einem Suchalgorithmus die Einträge aus M in einen Vektor V übertragen.
Es ist durch eine weitere Matrix x bekannt, welcher Wert im Vektor von welcher Matrixposition in M stammte. Die
Zuordnung ist unsystematisch aber eindeutig.
Bsp:
M = 1 2
3 4
V = 1 3 4 2
x = 1 1
2 1
2 2
1 2
Gibt es einen effizienten Weg, die Werte aus V bei bekanntem x wieder zu M zusammenzusetzen?
Dabei soll aus Performancegründen KEINE Schleife verwendet werden.
Besten Dank für alle Tipps zu Lösung!
Matz
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:41 Fr 15.05.2009 | Autor: | Frasier |
Hallo Matz,
was du da hast sind die sog. subscript indices.
Die kannst du mit sub2ind in lineare Indexe umwandeln.
Diese wiederum kannst du dann einfach in einer Zuweisung benutzen, Matlab mach den Rest.
1: | v=[1 3 4 2];
| 2: | x= [1 1;
| 3: | 2 1;
| 4: | 2 2;
| 5: | 1 2];
| 6: | siz=[max(x(:,1)),max(x(:,2))];
| 7: | ind=sub2ind(siz,x(:,1),x(:,2));
| 8: | M=zeros(siz);
| 9: | M(ind)=v |
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:19 Mo 18.05.2009 | Autor: | Matz |
Super, "sub2ind" ist genau was ich suchte! Besten Dank!
|
|
|
|