Matlab 不同维数矩阵的元素相乘

Matlab 不同维数矩阵的元素相乘,matlab,matrix,Matlab,Matrix,在Matlab中,我需要将两个M×N和M×kN维的矩阵按元素相乘。换句话说,它们的高度相同,但第二个矩阵的宽度是k倍,因此矩阵A中的每个元素必须乘以矩阵B中行的k个元素 解释起来有点难,如果不清楚,我很抱歉。显然我知道。*但我不知道如何让它工作 A = [2 3;... 4 5] B = [9 8 7 6;... 8 7 6 5] 我需要乘以| 2*9,2*8,3*7,3*6 | 4*8,4*7,5*6,5*5来得到结果 C = [18 16 21 18;... 32

在Matlab中,我需要将两个M×N和M×kN维的矩阵按元素相乘。换句话说,它们的高度相同,但第二个矩阵的宽度是k倍,因此矩阵A中的每个元素必须乘以矩阵B中行的k个元素

解释起来有点难,如果不清楚,我很抱歉。显然我知道。*但我不知道如何让它工作

A = [2 3;...
    4 5]
B = [9 8 7 6;...
    8 7 6 5]
我需要乘以| 2*9,2*8,3*7,3*6 | 4*8,4*7,5*6,5*5来得到结果

C = [18 16 21 18;...
    32 28 30 25]

这可以在不使用繁琐的for循环的情况下高效地完成吗?谢谢大家

您可以这样做,这似乎是您想要的,并且提供与您发布的内容相同的结果

A = [2 3;
     4 5];
B = [9 8 7 6;
     8 7 6 5];
A = imresize(A,size(B),'nearest');
C = A.*B

不过,这只会在您介绍的特定案例中真正起作用。它还假设您有图像处理工具箱,您可以执行类似的操作,这似乎是您想要的,并提供与发布内容相同的结果

A = [2 3;
     4 5];
B = [9 8 7 6;
     8 7 6 5];
A = imresize(A,size(B),'nearest');
C = A.*B

不过,这只会在您介绍的特定案例中真正起作用。它还假设您拥有图像处理工具箱

您可以排列、重塑、按元素倍增、再次排列和重塑:

X = bsxfun(@times, A, reshape(B.', size(A,1), size(A,2), []));  %'// elementwise
C = reshape(permute(X, [1 3 2]), size(B));

您可以按元素顺序排列、重塑、乘法、再次排列和重塑:

X = bsxfun(@times, A, reshape(B.', size(A,1), size(A,2), []));  %'// elementwise
C = reshape(permute(X, [1 3 2]), size(B));

很好地使用了
imresize
;)MATLAB的每个发行版不是都包含图像处理吗?我想我用过的每个发行版都有。我的
imresize
;)的糟糕用法MATLAB的每个发行版不是都包含图像处理吗?我想我用过的每个发行版都有。我的错