wavファイルから高周波数を取り除く方法
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
0~1500Hzの周波数が確認されるwavファイルから500Hz以上の音を消した音声ファイルを新たに作りたいです。
また、500Hz以下を消した音声ファイルもつくりたいと考えています。
butter,filtfiltなど、いろいろ見てみたのですがよく理解出来ませんでした。
解説を細かく書いていただけると幸いです。
ご教授ください。
2 Kommentare
源樹 上林
am 29 Okt. 2024
まず同じ質問が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) の根拠などの技術的な事については、すみません分かりません。他の方解説お願いします。
使い方としてはこんな感じです。
Antworten (0)
Siehe auch
Kategorien
Mehr zu Butterworth finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!