フィルターのクリア

How to multiply Multidimensional Arrays with a column vector

9 ビュー (過去 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 ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by