0

Matlabでは、私は一般的に次のようなことを行います

f  = @(x) x.^2;
xx = 0:.1:1;
ff = f(xx);

そのため、f は関数ハンドルで、xx と ff は両方とも 1x11 ベクトルです。

ただし、何らかの理由で関数ハンドル f を次のように定義する必要がある場合

f  = @(x) 1;

xx と ff のコードを変更しない場合、xx はベクトルのままですが、ff はそうではなく、double になります。

私のコードの続きは ff が 11x1 ベクトルであると仮定しているので、これはもちろん厄介です。

したがって、私の最初の質問は、私のコードがそもそも健全であるかどうかです。もしそうなら、「定数 f」の場合に動作させるにはどうすればよいですか? そうでない場合、どのように書き直せばよいですか?

これは確かにmatlab の定数匿名関数が配列ではなく 1 つの値のみを返すことに似て いますが、そのスレッドで答えを見つけることができません。

4

2 に答える 2

3

リンクした回答を少し変更すると、必要な結果が得られます。

f = @(x) ones(size(x));

のサイズは、 と同じサイズの 1 のベクトルを出力するためf(x)、入力のサイズと一致します。xfx

于 2015-11-22T19:19:41.313 に答える