How to multiply Multidimensional Arrays with a column vector

12 ビュー (過去 30 日間)
Tristan
Tristan 2013 年 10 月 28 日
コメント済み: Shambhavi Singh 2019 年 2 月 14 日
I want to multiply A with B so that C(:,:,1) is equal to A(:,:,1)*B(1) and C(:,:,2) is equal to A(:,:,2)*B(2)
>> A = cat(3, [2 8; 0 5], [1 3; 7 9])
A(:,:,1) =
2 8
0 5
A(:,:,2) =
1 3
7 9
>> B=[1 2]'
B =
1
2
I'm looking to get this:
>> C=???
C(:,:,1) =
2 8
0 5
C(:,:,2) =
2 6
14 18

回答 (3 件)

sixwwwwww
sixwwwwww 2013 年 10 月 28 日
編集済み: sixwwwwww 2013 年 10 月 28 日
Dear Tristan, here is the code which performs the task:
A = cat(3, [2 8; 0 5], [1 3; 7 9]);
B=[1 2]';
for i = 1:length(B)
C(:, :, i) = B(i) * A(:, :, i);
end
disp(C)
I hope it helps. Good luck!
  5 件のコメント
sixwwwwww
sixwwwwww 2013 年 10 月 28 日
You can do it like this:
C = cat(3, [], [], B);
Shambhavi Singh
Shambhavi Singh 2019 年 2 月 14 日
This should work too
C=A.*permute(B,[3 2 1]),3);
Permute switches the rows in B (So the elements of a column vector) with the third dimension

サインインしてコメントする。


James Tursa
James Tursa 2013 年 10 月 28 日

Pavel Chmelar
Pavel Chmelar 2016 年 1 月 12 日
Clear Matlab solution according sixwwwwww and Tristan:
B=zeros(1,1,2);
B(:)=[1,2];
C=bsxfun(@times,A,B);

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by