wavファイルから高周波数を取り除く方法
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
0~1500Hzの周波数が確認されるwavファイルから500Hz以上の音を消した音声ファイルを新たに作りたいです。
また、500Hz以下を消した音声ファイルもつくりたいと考えています。
butter,filtfiltなど、いろいろ見てみたのですがよく理解出来ませんでした。
解説を細かく書いていただけると幸いです。
ご教授ください。
2 comentarios
源樹 上林
el 29 de Oct. de 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) の根拠などの技術的な事については、すみません分かりません。他の方解説お願いします。
使い方としてはこんな感じです。
Respuestas (0)
Ver también
Categorías
Más información sobre Butterworth en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!