How to multiply 4D array.
2 views (last 30 days)
Show older comments
i want to multiply
L(:,:,k,:).*M(:,:,k,:);
i want to multiply without loop.
0 Comments
Accepted Answer
Christine Tobler
on 17 Dec 2015
Edited: Christine Tobler
on 17 Dec 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 Comments
Christine Tobler
on 18 Dec 2015
I'm not sure what you want L and M to be, can you explain in more detail?
More Answers (1)
Walter Roberson
on 17 Dec 2015
L.*M
Somehow I suspect that your question missed some information...
0 Comments
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!