对如何在Matlab中创建3个带通butterworth滤镜有一些疑问。
我需要一个较低的截止频率,它应该是625的整数倍,下一个应该是1875,2500 Hz。
我想要一个低频范围的带通滤波器,如(80 - 100 hz?),一个在中频(400 hz?)范围,一个在高频范围(4khz?)。当然不能超越奈奎斯特限制。
我怎样才能创建这3个滤镜并将它们应用到一段音乐中?
任何人都有想法使用butter命令使用多个频率?
谢谢!
答案 0 :(得分:0)
首先,您要对音乐文件进行wavread以将其加载到Matlab中(这是在时域中),
接下来你要创建3个带通滤波器(Butterworth)
您有2条执行路线,分别位于时域或频域。
在时域中:
[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 butterworth过滤器命令
[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] =黄油(8,[0.2 0.6],'通过');)%为带阻,改为通过停止
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))