嗨,我有以下cellfun操作:
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);
好的,基于下面的长时间讨论,我现在掌握了您的问题。供将来参考:提供更多的上下文/细节可以防止此类讨论。
无论如何,试试这个:
b = cellfun(@(x) nansum(...
mag.* subsref(cross(u{1},x), struct('type', '()', 'subs', {':',':',3})) ),...
r, 'UniformOutput',false);
这不是最漂亮的解决方案,但它能满足你的要求。