我有一个向量x = [1 2 3]
和一个3乘3的单元格数组C
,它由N个N矩阵组成。例如。 C{1,1}
是N×N矩阵。
我希望将x
和C
相乘,得到大小为1的单元格数组D
:
D{1,1} = x(1)C{1,1) + x(2)C{2,1} + x(3)C{3,1}
D{1,2} = x(1)C{1,2) + x(2)C{2,2} + x(3)C{3,2}
D{1,3} = x(1)C{1,3) + x(2)C{2,3} + x(3)C{3,3}
答案 0 :(得分:3)
对于长度为x
的矢量M=3
和M-by-M
单元阵列C
,我们的想法是形成M*N-by-M
矩阵,其中列{ {1}}由单元格i
中的所有值组成。然后,您可以使用C{i,:}
的矩阵乘法来获取x.'
和D
中的值,以将结果分解为新的单元格数组。
mat2cell
测试数据:
Ct = C';
Dvals = reshape([Ct{:}],[],M)*x.';
D = mat2cell(reshape(Dvals,N,[]),N,N*ones(M,1))
注意:这要求每个子矩阵的大小与问题中的相同。
答案 1 :(得分:0)
D = cell(1, 3);
D{1} = x(1) * C{1,1} + x(2) * C{2,1} + x(3) * C{3,1};
D{2} = x(1) * C{1,2} + x(2) * C{2,2} + x(3) * C{3,2};
D{3} = x(1) * C{1,3} + x(2) * C{2,3} + x(3) * C{3,3};
D = cell(1, 3);
for i=1:3
D{i} = x(1) * C{1,i} + x(2) * C{2,i} + x(3) * C{3,i};
end
D = cell(1, 3);
for i=1:3
D{i} = x(1) * C{1,i};
for j=2:3
D{i} = D{i} + x(j) * C{j,i};
end
end