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 が関数を認識しないことを意味しますananが という別の m ファイルに実装されてan.mいること、および現在の作業ディレクトリにあることを確認してください。

追加の問題

あなたのarrayfun構文に欠陥があることがわかります。現在の問題を解決すると、別のエラー メッセージが表示されると思います。

??? Error using ==> an
Too many input arguments.

問題は、関数anが入力引数を 1 つしか受け付けないのに、 で 3 つの引数を渡していることですarrayfun。代わりに、引数を 1 つだけ渡します。次に例を示します。

arrayfun(@an, B);

または、an次のように 3 つの引数を受け入れるように変更します。

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

あなたが何を達成しようとしているのかわからないので、選択するのはあなた次第です。

于 2013-01-02T14:42:21.360 に答える