四维数组与二维数组相乘。

有一个数据A 格式是x*y*z*t
相当于经度、维度、高度、时间维
有一个数组B,格式是x*y,经度*维度
现在要对数组A 每一个网格平面与数组B相乘
我只会下面这种循环切片的方式,效率很低,请问有别的方法吗?
for iz = 1z
for it = 1 : t
       C(:,:,iz,it) = squueze(A(:,:,iz,it)) .* B
end
end
%--------更新
目前想到一个方法,把数组B 复制扩充 ,这样数组A和数组B规格相同,直接矩阵相乘可
B0 = repmat(B, [1,1,z,t]);
C  = A.* B0

 采纳的回答

doocon
doocon 2023-5-15

0 个投票

2020b 开始的版本使用 pagemtimes 函数:
Z = pagemtimes(X,Y)
帮助文档:如果 X 或 Y 之一是矩阵,则 pagemtimes 将其与另一输入的每页相乘。例如,如果 X 是矩阵,则 Z(:,:,i) = X*Y(:,:,i)。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 矩阵和数组 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!