Ho un 3d (o in generale n-dimensionale) matrice A
con dimensioni3d matrice per vettore colonna moltiplicazione
size(A) = [d1 d2 d3 ... dn].
Ora voglio fare una moltiplicazione vettore con un vettore colonna v
sopra una delle dimensioni (come farei in 2 dimensioni, dove ottengo un vettore restituito - ad esempio per d1 = 2
, d3 = 4
e size(v) = d2
), in modo che
(A*d)_i = sum(a_ij*v_j).
quindi voglio ridurre di una dimensione.
C'è una funzione Matlab (diverso da looping) che restituisce una colonna di d3
dimensionale vettore v
(A*v)_ij = sum(A_ijk*v_k).
Spero che questo era chiaro.
Grazie!
bene - grazie mille. Speravo in qualcosa di più liscio, ma questo è abbastanza giusto, immagino. – user1763302
Questo metodo funziona solo quando la dimensione da moltiplicare è l'ultima dimensione della matrice N-d. Sarebbe bello se il codice funzionasse per qualsiasi dimensione 1 ... N della matrice N-D. Sembra fattibile con 'dimshift' all'inizio e alla fine. – cjh
Sembra fattibile con 'permute' infatti ... Ci vorranno pochi minuti per pensarci. Sentiti libero di modificare la mia risposta o di aggiungere la tua. Presto ho una scadenza. – Oli