单元格中的多重矩阵

时间:2016-10-25 16:49:33

标签: matlab matrix cell

我有一个矩阵A=[1,2,3]和一个单元格B={[1,2,3],[1,2,5],[1,2,6]}。 我想要一个类似单元格的矩阵元素的乘积 这意味着A * B ={1*[1,2,3],2*[1,2,5],3*[1,2,6]}; 在matlab中没有循环

1 个答案:

答案 0 :(得分:2)

这里有几种方法可以如你所描述的那样繁殖:

% inputs
A = [1,2,3];
B = {[1,2,3],[1,2,5],[1,2,6]};

使用for-loop:

C1 = cell(size(B));
for i=1:numel(C1)
    C1{i} = A(i) * B{i};
end

使用cellfun

C2 = cellfun(@(a,b)a*b, num2cell(A), B, 'Uniform',false);

使用bsxfun

C3 = bsxfun(@times, A(:), cat(1,B{:}));
C3 = num2cell(C3,2)';

所有结果应相等(输出为单元格数组):

assert(isequal(C1,C2,C3))

如果我选择的话,我会坚持使用for-loop。在这种情况下,它可能更快,更容易阅读。