0

次のようなループで複数のガウス フィルターを作成しようとしています。

for sigma:3:0.4:15
    filter = fspecial('gaussian', 6*sigma, sigma);
end

float を size パラメーターに渡すのが好きではなく、次のエラーが表示されます。

Expected input number 2, N, to be integer-valued.

しかし、コード行を次のように変更すると:

filter = fspecial('gaussian', uint8(6*sigma), sigma);

次のエラーが表示されます。

Expected input number 2, N, to be one of these types:
double
Instead its type was uint8.

私は完全に困惑しています。アドバイスをいただければ幸いです。

4

1 に答える 1

0

ドキュメントは、の最初の引数がでfspecialある場合'gaussian'、2番目の引数は整数であることを示唆しています。これは、引数の予想されるタイプについては何も意味せず、丸められた数値でなければならないことだけを意味します。

2回目の試行と結果のエラーから、2番目の引数の予想される型は。であることがわかりますdouble

したがって、探しているコマンドは次のようになります。

filter = fspecial('gaussian', floor(6*sigma), sigma);

または何か近いもの(実数を整数に丸める代替関数については、床関数のドキュメントを参照してください)。

于 2013-03-01T17:17:07.493 に答える