1

我有一个大小为 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}*...)。元胞数组只是处理数据的一种方式。有什么有效的方法来做这个乘法吗?

4

1 回答 1

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 矩阵。

于 2013-08-08T10:09:10.930 回答