我正在为wavfile设计一个过滤器,实际上我想做的是分离某些频率的频段,放大它们然后将它们添加回wav文件
[y Fs]=wavread('test_2.wav');
Wp = [1100 2200]/Fs;
Ws = [1000 2500]/Fs;
Rp = 3; Rs = 40;
[n,Wn] = buttord(Wp,Ws,Rp,Rs)
[b,a] = butter(n,Wn);
z=filter(b,a,y);
gain = 20;
filtered = gain .* z;
我设法通过带通滤波器分离某个频段并用缩放器放大它现在我想将它添加回wav文件,是否有任何内置命令通过它可以获得过滤输出的精确索引(find()不起作用)
答案 0 :(得分:1)
您可以使用filtfilt
。
y = filtfilt(b,a,x)通过在正向和反向两个方向处理输入数据x来执行零相位数字滤波。
所以在你的情况下,
z = filtfilt(b,a,y);
gain = 20;
filtered = gain .* z;
y = y + filtered;