数字信号实习报告_数字信号处理实习报告

2020-02-28 实习报告 下载本文

数字信号实习报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数字信号处理实习报告”。

数字信号上机实习报告

学院:机电学院 班级:071103-27 姓名:高玉环 指导老师:王晓莉

专题一

一、实验内容

设线性时不变(LTI)系统的冲激响应为h(n),输入序列为x(n)

1、h(n)=(0.8),0≤n≤4; x(n)=u(n)-u(n-4)

2、h(n)=(0.8)u(n), x(n)=u(n)-u(n-4)

3、h(n)=(0.8)u(n), x(n)=u(n)求以上三种情况下系统的输出y(n)。

二、实验目的1、掌握离散卷积计算机实现。

2、进一步对离散信号卷积算法的理解。

三、原理及算法概要

算法:把冲激响应h(n)与输入序列x(n)分别输入到程序中,然后调用离散卷积函数y=conv(x.,h)即可得到所要求的结果。原理:

离散卷积定义为 y(n)nnnkx(k)h(nk)

 当序列为有限长时,则

n y(n)四.程序 x(k)h(nk)

k0x1=[1 1 1 1 ];nx1=0:3;h1=[1 0.8 0.64 0.8^3 0.8^4];nh1=0:4;y1=conv(x1,h1);subplot(3,3,1);stem(nx1,x1);title('序列x1');xlabel('n');ylabel('x1(n)');subplot(3,3,2);stem(nh1,h1);title('序列h1');xlabel('n');ylabel('h1(n)');subplot(3,3,3);stem(y1);title('序列y1');xlabel('n');ylabel('y1(n)');

x2=[1 1 1 1];nx2=0:3;nh2=0:1:20;h2=(0.8).^nh2;y2=conv(x2,h2);subplot(3,3,4);stem(x2);title('序列x2');xlabel('n');ylabel('x2(n)');subplot(3,3,5);stem(h2);title('序列h2');xlabel('n');ylabel('h2(n)');subplot(3,3,6);stem(y2);title('序列y2');xlabel('n');ylabel('y2(n)')

nx3=0:1:20;x3=1.^nx3;nh3=0:1:20;h3=(0.8).^nh3;y3=conv(x3,h3);subplot(3,3,7);stem(nx3,x3);title('序列x3');xlabel('n');ylabel('x3(n)');subplot(3,3,8);stem(nh3,h3);title('序列h3');xlabel('n');ylabel('h3(n)');subplot(3,3,9);stem(y3);title('序列y3');xlabel('n');ylabel('y3(n)' 六.程序运行结果

六.结果分析

有限长序列的离散卷积计算结果与理论值一致,而存在无限长序列做卷积时,由于在程序处理时是用比较长有限长序列代替的,所以与理论值基本相同。专题

二、离散傅里叶变换及其应用

一、实验内容

设有离散序列 x(n)=cos(0.48πn)+cos(0.52πn)分析下列三种情况下的幅频特性。

(1)采集数据长度N=16,分析16点的频谱,并画出幅频特性。

(2)采集数据长度N=16,并补零到64点,分析其频谱,并画出幅频特性。(3)采集数据长度N=64,分析46点的频谱,并画出幅频特性。观察三幅不同的幅频特性图,分析和比较它们的特点及形成原因。

二、实验目的1、了解DFT及FFT的性质和特点

2、利用FFT算法计算信号的频谱。

三、关键算法

读入离散序列x(n)=cos(0.48πn)+cos(0.52πn),采集长度为N=16的数据,调用matlab中的函数fft(x,16)与fft(x,64)对其作离散傅里叶变换得到16点、64点的频谱。采集数据长度为N=64,调用matlab中的函数fft(x,46)对其作离散傅里叶变换得到46点的频谱。原理概要:

当抽样数N=2时,以下为算法蝶形图。

x(0)x(1)x(2)0WNM

X(0)W0N1W0NX(4)X(2)X(6)X(1)X(5)X(3)X(7)x(3)x(4)x(5)x(6)x(7)112WN10WNW0N11WN21WN1110WN2WN1W3N1W0N1

一般规律如下:

1、当N=2M时,则要进行M次分解,即进行M级蝶形单元的计算

2、按自然顺序输入,输出是码位倒置。

3、每一级包含N/2个基本蝶形运算

4、第L级有2L-1个蝶群,蝶群间隔为N/2

如果是Matlab实现的话,可用以下两种方法计算信号频谱

1、调用库函数为:fft(),直接计算X(k)L-

1L-1

000x0WNWNX0WNX101N1x1WWWNNN

2、进行矩阵运算0N1N1N1XN1xN1WWWNNN四.程序

n=0:1:15;x1=cos(0.48*3.14*n)+cos(0.52*3.14*n);g1=abs(fft(x1,16));subplot(3,2,1);stem(x1);title('x1');subplot(3,2,2);stem(g1);title('g1');

n2=0:1:15;x2=cos(0.48*3.14*n2)+cos(0.52*3.14*n2);x2=[x2 zeros(1,48)];g2=abs(fft(x2,64));subplot(3,2,3);stem(x2);title('x2');subplot(3,2,4);stem(g2);title('g2');

n3=0:1:64;x3=cos(0.48*3.14*n3)+cos(0.52*3.14*n3);g3=abs(fft(x3,46));subplot(3,2,5);stem(x3);title('x3');subplot(3,2,6);stem(g3);title('g3');

五.程序运行结果

六.结果分析

N 点DFT的频谱分辨率是2 π/N。一节指出可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率。这是因为x[n] 实际上是x(t)采样的主值序列,而将x[n]补零得到的x'[n] 周期延拓之后与原来的序列并不相同,也不是x(t)的采样。因此是不同离散信号的频谱。对于补零至M点的x'的DFT,只能说它的分辨率2 π/M仅具有计算上的意义,并不是真正的、物理意义上的频谱。频谱分辨率的提高只能通过提高采样频率实现。

专题三 IIR滤波器的设计

一、实验内容

1、设计一个Butterworth数字低通滤波器,设计指标如下:

通带截止频率:0.2π,幅度衰减不大于1分贝

阻带截止频率:0.3π,幅度衰减大于15分贝

2、让不同频率的正弦波通过滤波器,验证滤波器性能。

3、分析不同滤波器的特点和结果。

4、编程设计实现IIR滤波器。

二、实验目的掌握不同IIR滤波器的性质、特点。

通过实验学习如何设计各种常用的IIR滤波器,以便在实际工作中能根据具体情况使用IIR滤波器。

三、算法

算法:输入通带截止频率Wp,阻带截止频率Ws,通带衰减Rp,阻带衰减Rs,通过这些数值调用[N Wn]=buttord(Wp,Ws,Rp,Rs)函数计算巴特沃斯数字滤波器的阶数N和截止频率wn,再根据阶数N通过函数[b,a]=butter(N,Wn),即可得到所要的巴特沃斯滤波器。设计一个正弦波信号,再调用函数A=filter(b,a,I)让正弦波信号通过滤波器,得到滤波信号。

四.程序

Wp=0.2;Ws=0.3;Rp=1;Rs=15;[N Wn]=buttord(Wp,Ws,Rp,Rs)%用于计算巴特沃斯数字滤波器的阶数N和截止频率wn

[b,a]=butter(N,Wn);%计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a,设计所需的低通滤波器 [h,omega]=freqz(b,a,512);%返回量h包含了离散系统频响,调用中若N默认,默认值为512。

plot(omega/pi,20*log10(abs(h)));grid;xlabel('omega/pi');ylabel('Gain,dB');title('IIR Butterworth Lowpa Filter');

Wp=0.2;Ws=0.3;Rp=1;Rs=15;[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);%用于确定阶次

[b,a]=butter(N,Wn);%用于直接设计巴特沃兹数字滤波器,即为IIR滤波器 %freqz(b,a);t=1:300 I=sin(0.1*pi*t)+sin(0.4*pi*t);%设计正弦波 plot(I);figure;A=filter(b,a,I);%正弦波通过滤波器 plot(A);五.程序运行结果

N = 6 Wn = 0.2329 N1 = 6 Wn1 = 0.2329

六.结果分析

Butterworth滤波器在通带内的频率特性是平坦的,并且随着频率的增加而衰减。正弦信号在经过IIR滤波器滤波后,高频信号被滤除,低频信号被保留了下来。

专题四 用窗函数设计FIR 滤波器

一、实验内容

选取合适窗函数设计一个线性相位FIR低通滤波器,使它满足如下性能指标: 通带截止频率:ωp=0.5π,通带截止频率处的衰减不大于3分贝; 阻带截止频率:ωs=0.66π,阻带衰减不小于40分贝。

二、实验目的1、掌握用窗函数法设计FIR滤波器的原理和方法。

2、熟悉线性相位滤波器特性。

3、了解各种窗函数对滤波器特性的影响。

三、算法

算法:通过其通带截止频率ωp与阻带截止频率ωs算出其过渡带的宽度与滤波器的长度,从而得到理想滤波器的截止频率,根据所要求的理想滤波器,得到hd(n)。由于其通带截止频率处的衰减不大于3分贝与阻带衰减不小于40分贝,我选择最接近的汉宁窗,最后调用函数h=hd.*win 及freqz(h,1,512)得到实际汉宁窗的响应和实际滤波器的幅度响应。

四.程序

wp =0.5*pi;ws=0.66*pi;wdelta =ws-wp;%过渡带宽度 N=ceil(8*pi/wdelta)%滤波器长度 if rem(N,2)==0 N=N+1;end Nw =N;wc =(wp+ws)/2;%理想低通滤波器的截止频率 n =0: N-1;alpha =(N-1)/2;m =n-alpha+0.00001;hd =sin(wc*m)./(pi*m);%一个响应 win =(hanning(Nw))';%汉宁窗

h=hd.*win;%实际汉宁窗的响应

freqz(h,1,512);%实际滤波器的幅度响应

五.程序运行结果

N = 50

五、综合一、实验内容

录制一段自己的语音信号,时间为10s左右,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用MATLAB设计一信号处理系统界面。二.算法

调用函数function pushbutton1_Callback(hObject, eventdata, handles)实现一个信号处理系统界面。选择左键时,用双线性变换法设计滤波器来对信号进行处理,选择右键时,用窗函数法设计滤波器来对信号进行处理。读取语音信号,对语音信号进行f=8000的频率进行采样,调用函数y1=fft(x1,2048)对所采集的点做2048点FFT变换。先设计butterworth模拟滤波器,再用双线性变换法实现模拟滤波器到数字滤波器的转换。最后调用函数f1=filter(bz,az,x2)对加了噪声的语音信号进行滤波,得到滤波后的频谱图。

三.程序

function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1(see GCBO)

% eventdata reserved为爱痴狂.wav');t=(0:length(x1)-1)/8000;

y1=fft(x1,2048);%对信号做2048点FFT变换 f=fs*(0:1023)/2048;%figure(1);

axes(handles.axes1);%subplot(2,2,1);

plot(t,x1);%做原始信号的时域波形 grid on;axis tight;

title('原始语音信号');

xlabel('time(s)');ylabel('幅度');%subplot(2,2,2);axes(handles.axes2);

plot(f,abs(y1(1:1024)))%做原始信号的FFT频谱 grid on;axis tight;

title('原始语音信号的FFT频谱');xlabel('Hz');ylabel('幅度');%双线性变换法设计的巴特沃斯滤波器 A1=0.05;A2=0.10;

d=[A1*cos(2*pi*6000*t)+A2*sin(2*pi*8000*t)]';%x2=x1;[n]=size(d);

x2(1:n,1)=x1(1:n,1)+d(1:n,1);%x2(1:n,2)=x1(1:n,2);%%%%%% %wp=0.10*pi;%ws=0.20*pi;wp=wp1*pi;ws=ws1*pi;Rp=1;Rs=15;Ts=1/Fs;

wp1=2/Ts*tan(wp/2);%将模拟指标转换为数字指标 ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器最小阶数

[Z,P,K]=buttap(N);%创建butterworth模拟滤波器 [Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);

[bz,az]=bilinear(b,a,Fs);%用双线性法实现模拟到数字的转换

[H,W]=freqz(bz,az);%绘制频率响应曲线 axes(handles.axes3);%subplot(2,2,3);

plot(W*Fs/(2*pi),20*log10(abs(H)));grid on;axis tight;title('Butterworth滤波');

xlabel('频率(Hz)');ylabel('频率响应');

f1=filter(bz,az,x2);%figure(2);

axes(handles.axes4);%subplot(2,2,1);

plot(t,x2);%画出滤波前的时域图 grid on;axis tight;title('滤波前的时域波形');axes(handles.axes5);%subplot(2,2,2);

plot(t,f1);%画出滤波后的时域图 grid on;axis tight;title('滤波后的时域波形');

y3=fft(f1,2048);y2=fft(x2,2048);axes(handles.axes6);%subplot(2,2,3);

plot(f,abs(y2(1:1024)));%画出滤波前的频谱图 grid on;axis tight;title('滤波前的频谱');

xlabel('Hz');ylabel('幅度');axes(handles.axes7);%subplot(2,2,4);

plot(f,abs(y3(1:1024)));%画出滤波后的频谱图 grid on;axis tight;title('滤波后的频谱');

xlabel('Hz');ylabel('幅度');

%---Executes on button pre in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2(see GCBO)

% eventdata reserved-to be defined in a future version of MATLAB

% handles structure with handles and user data(see GUIDATA)global f2 global fs global x2 global x1 global wp2 global ws2

t=(0:length(x1)-1)/8000;y1=fft(x1,2048);%对信号做2048点FFT变换 f=fs*(0:1023)/2048;Fs=fs;%figure(1);

axes(handles.axes1);plot(t,x1);%做原始信号的时域波形 grid on;axis tight;title('原始语音信号');xlabel('time(s)');ylabel('幅度');

axes(handles.axes2);plot(f,abs(y1(1:1024)));%做原始信号的FFT频谱 grid on;axis tight;title('原始语音信号的FFT频谱');xlabel('Hz');ylabel('幅度');%窗函数设计滤波器 t=(0:length(x1)-1)/40000;

A1=0.05;A2=0.10;

d=[A1*cos(2*pi*8000*t)+A2*sin(2*pi*10000*t)]';%x2=x1;[n]=size(d);

x2(1:n,1)=x1(1:n,1)+d(1:n,1);%%%%% wp=wp2;ws=ws2;wdelta=ws-wp;

N=ceil(8*pi/wdelta);%取整 wn=(wp2+ws2)*pi/2;

[bz,az]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率 [H,W]=freqz(bz,az);%绘制频率响应曲线 axes(handles.axes3);%subplot(2,2,3);

plot(W*Fs/(2*pi),20*log10(abs(H)));grid on;axis tight;title('Hanming滤波');

xlabel('频率(Hz)');ylabel('频率响应');%f2=filter(bz,az,x2);f2=filter(bz,az,x2);%figure(3);

axes(handles.axes4);plot(t,x2);

grid on;axis tight;title('滤波前的时域波形');axes(handles.axes5);plot(t,f2);

grid on;axis tight;title('滤波后的时域波形');f=fs*(0:2047)/4096;y3=fft(f2,4096);%f=fs*(0:2047)/4096;y2=fft(x2,4096);

axes(handles.axes6);plot(f,abs(y2(1:2048)));grid on;axis tight;title('滤波前的频谱');xlabel('Hz');ylabel('幅度');

axes(handles.axes7);plot(f,abs(y3(1:2048)));grid on;axis tight;title('滤波后的频谱');

xlabel('Hz');ylabel('幅度');

五、运行结果

图形界面(按下获取波形IIR所得结果)

按下选择音乐片段按钮显示如下:

按下获取波形FIR所得图形:

实习体会: 数据信号处理是一种很有用的课程,但课程本身理论性强、公式推导较多、概念比较抽象,通过上机的实践可加深对课本理论知识的理解和认识。通过学习可以设计出良好的算法,高效地组织处理数据。这门课在学习的时候做过类似的程序设计,想着应该不会太难,可是拿到题目了以后,才发现我们所掌握的知识和实际问题有些联系不上,才发现理论与实际相结合说起来容易,要做起来需要很多的练习实践才能达到。由于时间过得有点久了,很多知识都生疏了,但通过一段时间的学习后,把原来学的东西都拣起来了不少,看起程序来也得心应手了。这一阶段的实习让我体会到了能读懂程序和自己编写程序的差距是很大的,理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,经过大量的亲身实践后才能够得到更深的掌握,最终达到融会贯通的效果。有很多程序都是我和同学们一起研究商量才弄懂题目思想并做出来的,我感到了与他人合作的重要性,集思广益才能够完成某些任务的。通过本次上机实习,让我们亲自参与到数字信号处理的实践中,通过亲自验证理论并设计系统,进一步加深对这门课程的理论应用能力。实验以matlab为平台,让我不但对理论有了新的认识和理解,而且对matlab处理信号的应用能力得到了提高。

《数字信号实习报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数字信号实习报告
点击下载文档
相关专题 数字信号处理实习报告 实习报告 数字信号 数字信号处理实习报告 实习报告 数字信号
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文