我的单元格大小为1x200x201,每个单元格为2x2矩阵。我需要以一种我得到矩阵的方式乘以矩阵:2x2x201。这意味着:Cell_M{1,1,1}* Cell_M{1,2,1}*Cell_M{1,3,1}*...
等等,最多200个,最多201个(Cell_M{1,1,2}* Cell_M{1,2,2}*Cell_M{1,3,2}*...
)。单元阵列只是处理数据的一种方式。有没有有效的方法来进行这种乘法?
答案 0 :(得分:1)
浮点矩阵乘法通常不是关联的,因此A*B*C*D
是不明确的。在此代码中,我假设您正在寻找((A*B)*C)*D
d=size(Cell_M);
P = cell(d(1), 1, d(3));
P(:)={eye(2)};
for k=1:d(2),
P = cellfun(@mtimes, P(:,1,:), Cell_M(:,k,:), 'UniformOutput', false);
end
P = squeeze(P);
现在P
将是一个包含201个元素的单元格数组,其中每个元素都是一个2乘2的矩阵。