I am a bit confused about how dot multiplication (.*) works in MATLAB. For example, [1 2]' .* [1 2; 3 4] = [1 2; 6 8]. So it seems that each row of the first matrix is being multiplied by the corresponding row in the second matrix. However, [1 2] .* [1 2 3 4]' = [1 2; 2 4; 3 6; 4 8] - it seems that each column of the first matrix is being multiplied by the column vector in the second matrix. Further, [1 2] .* [1 2; 3 4; 5 6]' is not possible because of size incompatibility.
How is the multiplication being carried out? I am using MATLAB R2021b.

 採用された回答

Matt J
Matt J 2024 年 2 月 20 日
編集済み: Matt J 2024 年 2 月 20 日

1 投票

For matrices A and B, the rule is generally that A.* B is element-by-element multiplication a(i,j).*b(i,j), which means that normally all dimensions of A and B must be equal. However if ever size(A,n)=1 and size(B,n)~=1 (or vice versa), then A will be implicitly copied along dimension n until size(A,n)=size(B,n) and similarly for B.

2 件のコメント

Saunok Chakrabarty
Saunok Chakrabarty 2024 年 2 月 22 日
Thanks Matt! This clarifies my doubt. Apologies for the late acceptance.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Scope Variables and Generate Names についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by