我有一个函数可以将任意数量的参数引入单元格数组
function sumThese(varargin)
subtotals = cellfun(@sum, varargin);
total = sum(subtotals);
disp(total)
end
这适用于数组和数字,除非我有方形矩阵,否则它不会。它会告诉我:
Uniform输出中的非标量,将'UniformOutput'设置为false。
但是,如果我将'uniformoutput'
设置为false
,我现在会收到此错误:
未定义的函数或方法'sum'用于'cell
类型的输入参数
如何处理?
答案 0 :(得分:3)
更改@sum
cellfun
功能
subtotals = cellfun( @(x) sum(x(:)), varargin );
<强>为什么吗
因为sum
的输出,当应用于矩阵时不再是标量将subtotals
转换为标量和向量的单元格数组而不是1D向量。
使用调试器查看差异。
PS,
您知道吗cellfun
is not always better than a simple loop。
修改强>
使用for
循环的解决方案:
total = 0;
for ii = 1:numel(varargin)
total = total + sum( varargin{ii}(:) );
end