How to multiply 4D array.
3 次查看(过去 30 天)
显示 更早的评论
i want to multiply
L(:,:,k,:).*M(:,:,k,:);
i want to multiply without loop.
0 个评论
采纳的回答
Christine Tobler
2015-12-17
编辑:Christine Tobler
2015-12-17
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 个评论
Christine Tobler
2015-12-18
I'm not sure what you want L and M to be, can you explain in more detail?
更多回答(1 个)
Walter Roberson
2015-12-17
L.*M
Somehow I suspect that your question missed some information...
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!