我有一个名为A的2m乘2矩阵和一个名为B的2乘m矩阵。让我们将A的乘积命名为B,C: C = A * B;
其中C是2m×m矩阵。我想找到包含C的某些部分的矩阵F.F是2个矩阵,包含元素C(1,1),C(2,1),C(3,2),C(4,2), C(5,3),C(6,3),...... C(2m-1,m),C(2m,m)。 例如,考虑
A = [0,2;1,3;4,7;8,3;4,5;1,2]
B=[1,4,6;5,7,3]
C=A*B;
在这种情况下:
F=[C(1,1),C(2,1);C(3,2),C(4,2);C(5,3),C(6,3)]
但我喜欢在不计算C的所有元素的情况下找到F.因为我认为计算C的所有元素会浪费大量的m值。在一般情况下,有人会建议找到F的方法吗?
答案 0 :(得分:0)
使用索引:
F = [C(1:2*m+2:end);C(2:2*m+2:end)]'
要查找F
而不计算C
,您可以使用:
F=cell2mat(arrayfun(@(x) A(2*x-1:2*x,:)*B(:,x), 1:m,'uniformoutput',0))'
(您必须按照问题中的定义设置m, A, and B
)
<强>说明:强> F的每一行都是A中子矩阵与B列的乘积的转置。例如,F中的第一行是转置:
A(1:2,:)*B(:,1)
下一行是转置:
A(3:4,:)*B(:,2)
等
因此,此方法仅计算必要的值,方法是将B的每一列仅乘以相应的A子矩阵,并避免计算C中未使用的值。