matlab - 3D 矩阵乘以 2D 矩阵

标签 matlab matrix

我有一个 NxNx4 矩阵 (A) 和一个 4x4 矩阵 (B)。我需要将第一个矩阵 A 的四个元素组成的向量 a 相乘,比如说

a = A(1,1,1) 
    A(1,1,2)
    A(1,1,3)
    A(1,1,4)

通过 4x4 矩阵 B 但我不确定是否有比使用 for 循环构建向量 a< 更快、更聪明的解决方案。是否存在一种方法可以用几行代码来完成此计算?

我构建了A,就像

A(:,:,1) = rand(20);
A(:,:,2) = rand(20);
A(:,:,3) = rand(20);
A(:,:,4) = rand(20);

和矩阵B

B = rand(4);

现在我想将B

相乘
B*[A(1,1,1);A(1,1,2);A(1,1,3);A(1,1,4)]

这对于 A 的每个元素

B*[A(1,2,1);A(1,2,2);A(1,2,3);A(1,2,4)]
B*[A(1,3,1);A(1,3,2);A(1,3,3);A(1,3,4)]
...

最佳答案

您可以通过一个简单的循环来完成此操作,请注意 loops aren't necessarily slow在较新的 MATLAB 版本中。里程可能会有所不同。

循环的优点是提高代码可读性,这里发生的事情非常清楚:

% For matrix A of size N*N*4
C = zeros( size( A ) );
for ii = 1:N
    for jj = 1:N
        C( ii, jj, : ) = B * reshape( A( ii, jj, : ), [], 1 );
    end
end

关于matlab - 3D 矩阵乘以 2D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883213/

相关文章:

c# - 从矩阵中删除翻译

algorithm - 有效填充 3D 矩阵中的空单元

MATLAB:在 3D 矩阵的每个切片中插入前导行

matlab - 在 Arrayfun 中与 GPU 处理连接的问题。软件

c - 如何使用 libjpeg 获取图像的图像矩阵

python - matlab 函数 strel ("line") 到 python

python - 康威的生命游戏邻居计数

matlab - 如何在 MATLAB 中编辑图像的轴以反转方向?

不使用 numpy 或任何东西的 python 矩阵创建以及行和列的最大总和

c - 如何在 C 中动态定义矩阵