4

定数をfminsearchに渡すにはどうすればよいですか?たとえば、関数がある場合:

f(x、y、z)、xの固定値でfminsearchを実行するにはどうすればよいですか?

fminsearch(@f, [0,0,0]);

新しい関数を記述して、それに対してfminsearchを実行できることはわかっています。

function returnValue = f2(y, z)

returnValue = f(5, y, z);

...

fminsearch(@f2, [0,0]);

私の要件は、新しい関数を定義せずにこれを行う必要があるということです。ありがとう!!!

4

2 に答える 2

6

匿名関数を使用できます:

fminsearch(@(x) f(5,x) , [0,0]);

また、ネストされた関数を使用できます。

function MainFunc()
    z = 1;
    res = fminsearch(@f2, [0,0]);

    function out = f2(x,y)
        out = f(x,y,z);
    end
end

getappdataデータの受け渡しにも使用できます。

于 2012-10-13T17:37:03.110 に答える
2

私が考えることができる1つの方法は、グローバル変数を使用して定数値を関数に送信することです。これは、使用する関数のレベルにあります。例えば

関数ファイル内

 function  y  = f(x1,x2,x3)
 % say you pass only two variables and want to leave x3 const
 if nargin < 3
     global x3
 end
 ...

次に、fminsearchを使用するファイルに、次のいずれかを記述できます。

    y=fminsearch(@f,[1 0 0]);

また

 global x3
 x3=100 ; % some const
 y=fminsearch(@f,[1 0]);

これを行うにはもっと多くの方法があると確信しているので、他の方法を見るのは興味深いでしょう。

于 2012-10-13T15:23:37.387 に答える