主题:跪求巴特沃斯低通滤波器的设计程序
xiaol风云1
[专家分:0] 发布于 2008-11-23 22:47:00
[size=3]主要对语音信号进行处理,使用buttord,butter,plot,freqs等函数。要求是信号如何输入、存储、虑波程序及如何输出;滤波输出的时域图和频谱图,对输入和输出频谱图加以说明。
万分感谢!!!!![/size]
回复列表 (共1个回复)
沙发
yaodewang [专家分:0] 发布于 2008-12-07 15:28:00
[y,fs]=wavread('F:\matlab6.5\work\杨坤-无所谓 (2).wav');%读出信号,采样率。
y=y(:,1);%取单声道。
sigLength=length(y);
halflength=floor(sigLength/2);
Y = fft(y,halflength);
f=fs*(0:halflength-1)/sigLength;
figure;plot(f,Y);xlabel('Frequency(Hz)'); %画频域波形
t=(0:sigLength-1)/fs;
figure;plot(t,y);xlabel('Time(s)'); %画时域波形
[b,a] = butter(10,20/(fs/2),'high');
[c,d]=butter(10,200/(fs/2),'low');
y=filter(c,d,y);
y=filter(b,a,y);
sigLength=length(y);
Y = fft(y,sigLength);
Pyy = Y.* conj(Y) / sigLength;
halflength=floor(sigLength/2);
f=fs*(0:halflength)/sigLength;
figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)'); %滤波后的频域波形
t=(0:sigLength-1)/fs;
figure;plot(t,y);xlabel('Time(s)'); %滤波后的时域波形
wavwrite(y,fs,'yaodewang zhengyuan1'); %保存处理后的声音文件,文件名为”3_”.
上面的程序中有一个butter低通,我本人的程序在用的时候加了一个高通以实现带通。这个程序可以对一段语音信号进行滤波,选择不同的滤波频率可以得到你想要的声音
第一行的读取语音信号一定要是你自己文件的路径。并且只适合wmv格式的文件
我来回复