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