【问题标题】:MATLAB - Component of array and matrix multiplicationMATLAB - 数组和矩阵乘法的组件
【发布时间】:2025-12-03 20:00:02
【问题描述】:

我通过以下代码创建了一个带有矢量分量的 1x7 数组(因此实际大小为 1x7x3):

[half_phi half_theta] = meshgrid(-90:30:90, 0);
[half_x half_y half_z] = sph2cart(degtorad(half_phi), degtorad(half_theta), 1);
halfDir = cat(3, half_x, half_y, half_z)

接下来我要做的是使一个 3x3 矩阵与每个向量相乘,最后还返回一个 1x7x3 数组,如何简洁地实现这一点?

谢谢。

【问题讨论】:

    标签: matlab matrix-multiplication


    【解决方案1】:

    这是你想要的吗?

    A=rand(1,7,3);
    B=rand(3,3);
    
    C=reshape(reshape(A,1*7,3)*B,[1,7,3]);
    

    或许

    C=reshape(reshape(A,1*7,3)*B',[1,7,3]); %%% with B' instead of B
    

    【讨论】:

    • 第二个reshape 不一定需要。假设 C 尚未分配,您可以这样做:C(1,:,:)=reshape(A,1*7,3)*B;