我想在矩阵中的每个元素上应用一个函数.我写了以下代码:
function p = an(x)
p= x + 1;
end
Run Code Online (Sandbox Code Playgroud)
矩阵是例如:
B = [1 2 3; 3 4 5; 6 7 8]
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时:
arrayfun(@an , B(1, :) , B(2, :), B(3, :))
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
??? Error using ==> arrayfun
Undefined function or method 'an' for input arguments of type 'double'.
我不明白为什么.我怎么解决它?有更简单的方法吗?
Undefined function or method 'an' for input arguments of type 'double'.
这意味着MATLAB无法识别您的功能an.确保它an在一个名为的单独m文件中实现an.m,并且它位于当前工作目录中.
我可以看到你的arrayfun语法有缺陷.解决当前问题后,我预测您将遇到另一条错误消息:
??? Error using ==> an
Too many input arguments.
问题是函数an只接受一个输入参数,但是你传递了三个参数arrayfun.相反,要么只传递一个参数,例如:
arrayfun(@an, B);
Run Code Online (Sandbox Code Playgroud)
或修改an以接受三个参数,例如:
function p = an(x, y, z)
p = x + y + z
Run Code Online (Sandbox Code Playgroud)
我不确定你想要达到的目标,所以由你来决定.