信号采集与分析课程设计
1 课程设计要求
1.1 设计一
将信号x=cos(5/16*pi*n)+2*cos(9/16*pi*n)中2*cos(9/16*pi*n)分量滤除.
1.2 设计二
设计FIR滤波器,将提供的音频信号assA_06中的噪音滤除,识别信号中的声音.
2 设计
2.1设计一
2.1.1 MATLAB程序
clear;clf;clc;%清除上一次运行的记录
M=32;%实际滤波器长度
N=81;%信号长度,影响过渡带长度
R=1024;%理想滤波器长度
x=cos(5/16*pi*(0:N-1))+2*cos(9/16*pi*(0:N-1));%原信号
x1=cos(5/16*pi*(0:N-1));%直接取需要的信号,将在后面与滤波结果做对比
wc=7/16*pi;%穿越频率
K=wc/(2*pi)*R;%穿越频率对应R中的位数,224位
hdf=[zeros(1,R/2-K),ones(1,2*K),zeros(1,R/2-K)];%在频域构造理想滤波器,前288位为0,中间448位为1,后288位为0
hd=ifftshift(ifft(hdf));%将理想滤波器转换到时域,并做平移
h=hd((R-M)/2+1R+M)/2);%取时域理想滤波器的中间32位,使其物理可实现
y=conv(h,x);%将信号与实际滤波器在时域做卷积,时域的卷积=频域的乘积
G=length(y);%卷积结果的长度,112位
xf=fftshift(fft(x));%x做傅里叶变换,并做平移
hf=fft(h);%h做傅里叶变换
yf=fft(y);%y做傅里叶变换
w2=(0:N-1)/N*2*pi-pi;%设置图(2)的x轴
w4=(0:R-1)/R*2*pi-pi;%设置图(4)的x轴
w6=(0:M-1)/M*2*pi-pi;%设置图(6)的x轴
w7=(0:G-1);%设置图(7)的一个x轴
w77=(0:N-1);%设置图(7)的另一个x轴
w8=(0:G-1)/G*2*pi-pi;%设置图(8)的x轴
subplot(421),plot(x,'k'),ylabel('原信号'),title('时域'),xlabel('(1) x');
subplot(422),plot(w2,abs(xf),'k'),title('频域'),xlabel('(2) xf');
subplot(423),plot(abs(hd),'k'),ylabel('理想滤波器'),xlabel('(3) hd');
subplot(424),plot(w4,hdf,'k'),xlabel('(4) hdf'),axis([-4 4 -0.1 1.1]);
subplot(425),plot(abs(h),'k'),ylabel('实际滤波器'),xlabel('(5) h');
subplot(426),plot(w6,abs(hf),'k'),xlabel('(6) hf'),axis([-4 4 -0.1 1.1]);
subplot(427),plot(w7,real(y),'k',w77,x1,'k-.'),ylabel('处理后信号'),xlabel('(7) y x1');
subplot(428),plot(w8,abs(yf),'k'),xlabel('(8) yf');
2.1.2 设计效果
图 1 设计一
图1所示为设计一的设计过程及结果.有8个小图,分别为原信号、理想滤波器、实际滤波器和处理后信号的时域和频域波形.图1.(7)中的虚线是直接获取的需要信号,与滤波处理后的实线结果对比,可以看出,滤波处理后的结果达到了设计要求.
2.2 设计二
2.2.1 导入音频数据
Workspace→Inport data→选择音频信号→打开→Finish.Workspace中的data即为导入的音频信号,为一个向量.另一个数据fs是采样速率(Hz),在程序中会用到.
2.2.2 MATLAB程序
clf;clc;%清除上次运行的记录,注意不能用clear,会清除导入数据
x=data;%导入数据赋值给x
S=length(x);%测量x的长度
f1=400;%带通低频截止频率
f2=2000;%带通高频截止频率
w1=f1/fs*2*pi;%带通低频截止角频率
w2=f2/fs*2*pi;%带通高频截止角频率
N=8001;%信号长度,影响过渡带宽度
M=[-(N-1)/2N-1)/2]+eps;%-4000:4000
hd=sin(w2*M)./(pi*M)-sin(w1*M)./(pi*M);%理想带通滤波器
w=boxcar(N)';%N位的矩形窗
h=hd.*w;%实际带通滤波器
x1=fftfilt(h,x);%给数据x1加窗滤波
y=fftfilt(h,x1);%重复滤波,提高滤波质量
sound(200*y,fs);%放大并播放处理后的数据
xf=fftshift(fft(x));%x快速傅里叶变换,并平移
yf=fftshift(fft(y));%y快速傅里叶变换,并平移
hdf=fftshift(fft(hd));%hd快速傅里叶变换,并平移
hf=fftshift(fft(h));%h快速傅里叶变换,并平移
w2=(0:S-1)/S*2*pi-pi;%设置图(2)的x轴
w4=(0:N-1)/(N-1)*2*pi-pi;%设置图(4)的x轴
w6=w4;%设置图(6)的x轴
w8=w2;%设置图(8)的x轴
subplot(421),plot(x,'k'),title('时域'),ylabel('处理前信号'),xlabel('(1) x');
subplot(422),plot(w2,abs(xf),'k'),title('频域'),xlabel('(2) xf');
subplot(423),plot(hd,'k'),ylabel('理想滤波器'),xlabel('(3) hd');
subplot(424),plot(w4,abs(hdf),'k'),xlabel('(4) hdf');
subplot(425),plot(h,'k'),ylabel('实际滤波器'),xlabel('(5) h');
subplot(426),plot(w6,abs(hf),'k'),xlabel('(6) hf');
subplot(427),plot(y,'k'),ylabel('处理后信号'),xlabel('(7) y');
subplot(428),plot(w8,abs(yf),'k'),xlabel('(8) yf');
程序中调用了2次fftfilt()函数,重复滤波使滤波效果更好.变量data和fs由上一步导入音频数据产生,运行程序前必须导入音频数据,否则会报错.
2.2.3 设计效果
图2所示为处理前信号、窗和处理后信号的时域和频域波形.滤波后的信号仍然存在很多杂波,但是已经能够很清楚地听到信号中人发出的声音,满足后续需要,不再继续处理.
图 2 设计二
2.2.4 设计结果
assA_06中女士的话为:The meeting is on Monday same place same time.
文章评论(0条评论)
登录后参与讨论