【问题标题】:Multipl matrix in cell将单元格中的矩阵相乘
【发布时间】:2016-10-25 16:49:33
【问题描述】:

我有一个矩阵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中没有循环

【问题讨论】:

  • B 中的元素数量有变化吗?例如A.*cell2mat(B) 是否提供您想要的?

标签: matlab matrix cell


【解决方案1】:

按照您的描述,这里有几种乘法:

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

使用for循环:

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 循环。在这种情况下,它可能更快、更容易阅读。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2015-01-24
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多