4

我想对矩阵中的每个元素应用一个函数。我编写了以下代码:

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'.

我不明白为什么。我该如何解决?有更简单的方法吗?

4

1 回答 1

8

主要问题

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);

或修改an以接受三个参数,例如:

function p = an(x, y, z)
    p = x + y + z

我不确定你想要达到什么目标,所以由你来选择。

于 2013-01-02T14:42:21.360 回答