原创 信号采集与分析课程论文

2013-7-19 11:01 1224 8 8 分类: 测试测量 文集: 论文

信号采集与分析课程设计

 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.

 

tam

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条