Desidero ottenere un vettore di elementi di una matrice Matlab in posizioni predefinite. Per esempio, ho il seguenteConversione di una matrice matlab in un vettore
>> 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
Voglio un vettore che mi darà i valori delle A
nelle posizioni correspongin a i,j
. Ho provato
A(i,j)
ans =
1 3 4
5 7 8
9 11 12
ma questo non è quello che volevo. Voglio ottenere il seguente
>> [A(i(1),j(1)); A(i(2),j(2));A(i(3),j(3))]
ans =
1
7
12
Qual è la sintassi MATLAB per quello? Per favore, evita di suggerire loop o tutto ciò che non è in una forma vettoriale, poiché ho bisogno che ciò avvenga velocemente. Speriamo che ci sarà una funzione integrata.
Mentre questo funzionerà, è una scelta scadente in generale, dal momento che prima crea una nuova matrice 3x3 in memoria, quindi getta la maggior parte di quella matrice nel pozzetto utilizzando la funzione diag. Se i tuoi array e la lista di punti in (i, j) fossero abbastanza grandi, allora il diag-trick sarebbe abbastanza inefficiente. –