有一些关于如何在Matlab中创建3个带通巴特沃斯滤波器的问题。
我需要一个较低的截止频率,应该是625的整数倍,下一个应该是1875,2500赫兹。
我想要一个低频范围的带通滤波器,比如(80 - 100 hz?)一个在中频(400 hz?)一个在高频范围内(4 4khz?)。当然不能超过奈奎斯特的限制。
如何创建这3个过滤器并将其应用于一段音乐?
有没有人有办法在butter命令中使用多个频率?
谢谢!
发布于 2015-01-06 23:47:48
首先,您需要对音乐文件进行波形读取,以便将其加载到Matlab中(这是在时域中),
接下来,你想创建3个带通滤波器(巴特沃思)
您有两个执行路径,在时域或在频域。
在时域中:
[x1 Fs nbits] = wavread('yourfile.wav'); %Fs is your sample frequency, x1 is your vector/matrix depending on single channel or dual channel.
现在你只需要设计你的过滤器。您可以使用fdesign.bandpass作弊(请参阅http://uk.mathworks.com/help/dsp/ref/fdesign.bandpass.html)
使用matlab的巴特沃斯滤波器命令
[b,a] = butter(order,NormalizedCutOff); %you have to work out the Normalized Cut Off frequency using your sampling frequency or period, your desired cut-off etc.
如果您想要多个截止频率,请使用c1 c2代替NormalizedCutOff (即b,a=c1(8,0.2 0.6,' pass ');) %作为频带阻挡,将pass更改为stop
freqz(b,a) %The frequency response of your filter
dataIn = x1; %your music
dataOut = filter(b,a,dataIn); %filter command filters your music
你可以用wavwrite文件来收听它,或者使用(声音(dataout,fs))
https://stackoverflow.com/questions/27801299
复制相似问题