How to multiply 4D array.
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
i want to multiply
L(:,:,k,:).*M(:,:,k,:);
i want to multiply without loop.
0 Commenti
Risposta accettata
Christine Tobler
il 17 Dic 2015
Modificato: Christine Tobler
il 17 Dic 2015
You could try downloading the tensor toolbox by Kolda and Bader, where this is provided as a command ttt(L, M, 3, 3). Alternatively, you can use the following code:
permL = permute(L, [3 1 2 4]);
permM = permute(M, [3 1 2 4]);
szL = size(L);
szM = size(M);
result = permL(:, :)'*permM(:, :);
result = reshape(result, [szL([1 2 4]), szM([1 2 4])]);
This returns a 6-dimensional array result, such that
result(i1, i2, i3, j1, j2, j3)
is the same as
a = 0; for k=1:size(L, 3), a = a + L(i1, i2, k, i3)*M(j1, j2, k, j3); end; a
Is this what you wanted to compute?
2 Commenti
Christine Tobler
il 18 Dic 2015
I'm not sure what you want L and M to be, can you explain in more detail?
Più risposte (1)
Walter Roberson
il 17 Dic 2015
L.*M
Somehow I suspect that your question missed some information...
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrix Indexing in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!