コンテンツ
MATLABは、信号を詳細に解析し処理するために使用できるプログラミングツールです。一次元または数次元で信号を処理する際の一般的な操作は、高周波ノイズの除去です。ローパスフィルタは、定義により、信号から特定の値を超える周波数を除去するように設計されています。 MATLABでfilter2()関数を使用することは、そのようなフィルタを実装するための1つの方法です。
説明書
MATLABのfilter2()関数を使用すると、ローパスフィルターを実装できます。 (Hemera Technologies / AbleStock.com / Getty Images)-
データをMATLABにインポートします。多くの場合、フィルタ処理が必要な信号はバイナリ形式で保存されているため、インポートするにはfread()などの低レベルの入出力関数が必要です。ただし、MATLABには最も一般的な形式のイメージのインポーターが含まれています。
my_data = fread(file_handle、n_samples、data_type); my_image = imread( 'my_image_file.tif'、 'TIFF');
-
filter2()関数で処理する前に、データを2次元配列に変換してください。これを行うには、reshape()関数を使用して1次元のバイナリ配列を配列に変換するか、シリーズからイメージを選択します。 squeeze()関数を使用して、3次元以上の配列の一部を選択してシングルトン次元を削除します。
my_image = reshape(my_data、width、height); my_other_image = squeeze(my_image_series(:、:image_number));
-
フィルタを描画し、その結果を2次元配列Hに格納します。一般に、ローパスフィルタはfspecial()関数で作成できる「ガウスウィンドウ」を使用します。フィルタは特殊なsptool信号処理関数()を使って設計することもできます。 wvtool()関数を使うことであなたのフィルタウィンドウの周波数応答を見ることができます。コード例では、Hは標準偏差ガウスウィンドウ10を含む24 x 24の配列です。
H = fspecial( 'gaussian'、[24 24]、10); wvtool(H);
-
filter2()によって実装された2次元畳み込みアルゴリズムを使用してフィルタリングを実行します。デフォルトでは、filter2()の結果は入力データセットと同じ次元を持ちます。
my_filtered_data = filter2(my_data、H);