wavファイルから高周波数を取り除く方法
조회 수: 8 (최근 30일)
이전 댓글 표시
0~1500Hzの周波数が確認されるwavファイルから500Hz以上の音を消した音声ファイルを新たに作りたいです。
また、500Hz以下を消した音声ファイルもつくりたいと考えています。
butter,filtfiltなど、いろいろ見てみたのですがよく理解出来ませんでした。
解説を細かく書いていただけると幸いです。
ご教授ください。
댓글 수: 2
源樹 上林
2024년 10월 29일
まず同じ質問が2つ投稿して仕舞っているようなので、どちらかを消しておいた方がいいと思います。
以下は、バタワースフィルタ(butter)を使った例です。
fc = 500; % Hz カットオフ周波数
fs = 44100; % Hz サンプリング周波数
% 波形
% 200Hzと1000Hzを含んだ5秒間の波形
t = (0:5*fs-1) / fs; % s 時間ベクトル
y = 0.7*sin(2*pi*200*t) + sin(2*pi*1000*t);
% ローパスフィルタ
[b,a] = butter(6, fc/(fs/2));
freqz(b,a,[],fs)
y1 = filter(b,a,y);
% ハイパスフィルタ
[b,a] = butter(6, fc/(fs/2), 'high');
freqz(b,a,[],fs)
y2 = filter(b,a,y);
% 確認プロット
plot(t,y, t,y1, t,y2)
grid on
legend({'元波形' 'ローパス フィルタ後' 'ハイパス フィルタ後'})
xlim([2 2.005])
butterでフィルタを設計して、filterで波形にフィルタをかけています。設計したフィルタがちゃんとできているかをfreqzで確認しています。バタワースフィルタの次数はfreqzの結果を見て崩れないように調整してください。
次数についてや fc/(fs/2) の根拠などの技術的な事については、すみません分かりません。他の方解説お願いします。
使い方としてはこんな感じです。
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Butterworth에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!