matlab:在cellfun中进行乘法运算

时间:2012-08-30 20:32:03

标签: matlab bsxfun

您好我有以下手机操作:

b = cellfun(@(x) nansum(cross(u{1},x)),r,'UniformOutput',false);

其中u和r是向量。我想将十字产品的结果乘以一个名为I的标量,但它必须在求和中。我可以这样做:

b = cellfun(@(x) nansum(I.*cross(u{1},x)),r,'UniformOutput',false);

这会有用吗?

实际上只是尝试了并且得到了:

Matrix dimensions must agree.

Error in ==> cellcross>@(x)nansum(mag.*cross(u{1},x)) at 2
    b = cellfun(@(x) nansum(mag.*cross(u{1},x)),r,'UniformOutput',false);

Error in ==> cellcross at 2
    b = cellfun(@(x) nansum(mag.*cross(u{1},x)),r,'UniformOutput',false);

有什么建议吗?

更新

b = cellfun(@(x) nansum(bsxfun(@times, mag(:),cross(u{1},x))),r,'UniformOutput',false);

1 个答案:

答案 0 :(得分:1)

好的,基于下面的长篇讨论,我现在已经掌握了你的问题。 供将来参考:提供更多上下文/细节可以防止此类讨论。

无论如何,试试这个:

b = cellfun(@(x) nansum(...
    mag.* subsref(cross(u{1},x), struct('type', '()', 'subs', {':',':',3})) ),...
    r, 'UniformOutput',false);

不是最漂亮的解决方案,但它可以满足您的要求。