在所有矩阵元素上应用函数

时间:2013-01-02 14:01:55

标签: matlab matrix

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

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

我无法理解为什么。我该怎么办呢?有没有更简单的方法呢?

1 个答案:

答案 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

我不确定你想要达到的目标,所以由你来决定。