所以我现在正在编写的代码中有很多单元格操作,它有助于极大地提供两个参数的单元格函数(例如,在相同大小的单元格中连接数组)。然而,MatLab对多输入cellfun调用的简单使用感到困惑,所以我想找出我做错了什么(因为我只是遵循MatLab函数参考)。例如,
B = {[1 2;3 4] , [5 6;7 8]}
cellfun(mtimes,B,B)
返回
??? Error using ==> mtimes
Not enough input arguments.
实际上,如果我输入
,它会返回相同的消息cellfun(mtimes,B)
或
cellfun(mtimes,B,B,B,B)
帮助?
答案 0 :(得分:2)
根据MATLAB CELLFUN documentation,CELLFUN的第一个参数必须是函数 handle ,而不仅仅是函数的“原始”名称。所以,像这样......
B = {[1 2;3 4] , [5 6;7 8]}
cellfun(@mtimes,B,B)
(注意第二行上mtimes前面的@符号)。
通过放入“原始”mtimes,MATLAB试图在没有参数的情况下评估函数MTIMES,并使用的结果作为CELLFUN的第一个参数。但是,正如错误消息所示,MTIMES作用于无参数是一个错误。
相反,使用@mtimes来表示“指向”MTIMES函数的函数 handle 。