Matlab矩阵行对行乘法两个矩阵维度不一致

标签 matlab matrix multiplication

例如,我有两个矩阵 A 和 B

A = [ 1 2 3; 5 4 3; ...] 且 B = [ 1; 2; 3; 4; 5; 6](行矩阵)

我想要这个

A*B = [1*1 2*1 3*1; 5*2 4*2 3*2; ...] 没有循环。可能吗?

最佳答案

从数学上来说,两个矩阵只有在维度一致的情况下才能相乘;如果矩阵Am*n并且矩阵Bn*k那么你可以形成乘积A*B 其尺寸为 m*k。因此,从数学角度来看,矩阵 A(即 m*3)不能后乘以 B(即 6) *1。如果您的矩阵 A 实际上是 6*3,那么您可以形成尺寸为 1* 的乘积 B'*A 3..请注意此处使用转置运算符 'B6*1 转置为 1*6

Matlab 的矩阵乘法(使用* 运算符)符合矩阵一致的数学要求。 Matlab 还提供了另一个矩阵乘法运算符 .*,它执行逐个元素的乘法,即它通过以下方式形成结果的每个元素 (i,j)乘以A(i,j)*B(i,j)。我看到 @Thor 已经给了你一种方法来做到这一点。

如果您想要做的是将 Ai 中的每个元素乘以 i 中的标量B另一种方法是

A.*(repmat(B,1,size(A,2)))

或者,您可以使用更高效,但可能稍微不太直观的方法,

bsxfun(@times, A,B);

关于Matlab矩阵行对行乘法两个矩阵维度不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178211/

相关文章:

matlab - 矢量化:矩阵数组乘法逐个元素

python - 如何在Python中单行解决矩阵转置?

java - 给定角度和大小的运动模糊卷积矩阵

c - c中三个数相乘会得到错误的结果吗?

c - 两个数之间的乘法

matlab - 保存在 MATLAB 中生成的图形最大化到全屏

MATLAB fft y 轴含义

matlab - 在 matlab 中处理具有特定扩展名的文件列表

python - 如何跟踪 csr 矩阵

vba - 在 VBA 中设置长变量