Ich möchte einen Vektor von Elementen einer Matlab-Matrix an vordefinierten Positionen erhalten. Zum Beispiel habe ich folgendesKonvertieren einer Matlab-Matrix in einen Vektor
>> i = [1,2,3];
>> j = [1,3,4];
>> A = [1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15,16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Ich möchte einen Vektor, der mir die Werte von A
an den Standorten correspongin zu i,j
geben. Ich versuchte
aber das ist nicht was ich wollte. Ich möchte Folgendes erhalten:
>> [A(i(1),j(1)); A(i(2),j(2));A(i(3),j(3))]
ans =
1
7
12
Was ist die Matlab-Syntax dafür? Bitte vermeiden Sie Vorschläge für Schleifen oder irgendetwas, das nicht vektorisiert ist, da dies schnell erledigt werden muss. Hoffentlich wird es eine eingebaute Funktion geben.
Während dies funktioniert, ist es eine schlechte Wahl im Allgemeinen, da es zuerst erstellt eine neue 3x3-Matrix im Speicher, dann wirft es die meisten dieser Matrix in den Bit-Eimer mit der Diag-Funktion. Wenn Ihre Arrays und die Liste der Punkte in (i, j) überhaupt groß wären, wäre der Diag-Trick ziemlich ineffizient. –