2

所以我现在正在编写的代码中有很多单元格操作,这对拥有两个参数的单元格函数有很大帮助(例如,在相同大小的单元格中连接数组)。然而,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)

帮助?

4

1 回答 1

2

根据MA​​TLAB CELLFUN 文档,CELLFUN的第一个参数必须是函数句柄,而不仅仅是函数的“原始”名称。所以,像这样的事情......

B = {[1 2;3 4] , [5 6;7 8]}
cellfun(@mtimes,B,B)

(注意第二行 mtimes 前面的 @ 符号)。

通过放入“原始”mtimes,MATLAB 试图在没有参数的情况下评估函数 MTIMES,并将其结果用作 CELLFUN 的第一个参数。但是,正如错误消息所表明的那样,MTIMES 对无参数起作用是一个错误。

相反,使用@mtimes 来表示“指向” MTIMES 函数的函数句柄。

于 2013-08-04T03:30:29.713 回答