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

use*_*029 4 matlab matrix

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

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

我不明白为什么.我怎么解决它?有更简单的方法吗?

Eit*_*n T 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);
Run Code Online (Sandbox Code Playgroud)

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

function p = an(x, y, z)
    p = x + y + z
Run Code Online (Sandbox Code Playgroud)

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