初心者質問ですみませんが、192kHzでサンプリングした音源を「クロスオーバー周波数26または22kHz、カットオフ減衰量170または80dB/オクターブのローパスフィルタとハイパスフィルタ」にかけたいと考えています。
正直、質問していて私自身にもわかっていないことが多いのですが、論文に書いてあるので、そのまま質問させていただきます。
どなたか、matlabでこのフィルターをかけることができる、コードを教えていただけないでしょうか?
具体例があると良いのですが。宜しくお願い致します。

 채택된 답변

takemoto
takemoto 2020년 8월 17일

0 개 추천

Audio Toolboxから提供される機能で実現可能かと思います。
>>data = audioread('aaa.wav');
>>crossFilt = crossoverFilter(1,'CrossoverFrequencies',26e3,'CrossoverSlopes',80) ;
>>[y1,y2] = crossFilt(data);
とすれば、26kHzをクロスオーバー周波数とした、highバンド側とlowバンド側の出力が得られるはずです。

댓글 수: 5

Cir 2t
Cir 2t 2020년 8월 17일
ありがとうございます。
audio toolboxですか・・・・・
signal processingtoolboxなら、あるのですが。
それで、行う方法はないでしょうか?
たびたびすみませんが、指南していただけるとありがたいのですが。
takemoto
takemoto 2020년 8월 17일
Audio Toolboxをお持ちでなければ、high側とlow側について、それぞれご自身でフィルタを自作する必要があるかと思いますが、Signal Processing Toolboxをお持ちということなので、フィルタ設計自体は関数が利用できます。例えば、バタワースフィルタで実現するのであれば、以下のURLで、単体のフィルタ設計の手順が紹介されています。
high側のフィルタとlow側のフィルタに同じカットオフ周波数を設定し、所望の減衰量(スロープ)となる様にフィルタの次数を設定すれば実現できそうですが、いかがでしょうか?
Cir 2t
Cir 2t 2020년 8월 17일
ありがとうございます。たびたびすみません。
バンドパスバタワースフィルターのことでしょうか?もしそうであるならば、以下の点がよくわからないです。
「低域カットオフ周波数 500 Hz と高域カットオフ周波数 560 Hz をもつ 20 次のバタワース バンドパス フィルターを設計します。サンプルレート 1500 Hz」
[A,B,C,D] = butter(10,[500 560]/750);
上記の文から、butter内の10,750が出てくるのは、なぜでしょうか?
takemoto
takemoto 2020년 8월 17일
クロスオーバーフィルタは、一般には、所定のクロスオーバー周波数を境界点として、その高域成分と低域成分を分割するのに使用しますので、二分割の場合はバンドパスではなく、ハイパスフィルタとローパスフィルタの組み合わせとなりますが、三分割以上の場合は、それにバンドパスを加えた構成になるかと思います。
ご案内した上記例題のパラメータの意味ですが、10はフィルタの次数です。20次のフィルタを、二つのフィルタのカスケード接続で構成するため、単体のフィルタの次数を10としているのだと思います。 750は、ナイキスト周波数(サンプリング周波数の半分)です。butter関数は、カットオフ周波数の値を、ナイキスト周波数を1として正規化した値で設定するために、この用な表現になっているのではないでしょうか。
以上、参考となれば幸いです。
Cir 2t
Cir 2t 2020년 8월 20일
よくわかりました。色々とご指導ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Audio Processing Algorithm Design에 대해 자세히 알아보기

질문:

2020년 8월 15일

댓글:

2020년 8월 20일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!