Matlab:单元阵列中许多矩阵的矩阵乘法

时间:2013-08-08 09:27:33

标签: matlab matrix-multiplication cell-array

我的单元格大小为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}*...)。单元阵列只是处理数据的一种方式。有没有有效的方法来进行这种乘法?

1 个答案:

答案 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的矩阵。