How to multiply 4D array.
6 ビュー (過去 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!