北邮DSP数字信号处理Matlab实验一
- 格式:docx
- 大小:302.61 KB
- 文档页数:9
第一章离散时间信号的频域分析P1.1 单位样本和单位阶跃序列%程序P1_1%一个单位序列的产生clf;%产生从-10到20的一个向量n=-10:20;%产生单位样本序列u=[zeros(1,10) 1 zeros(1,20)];%绘制单位样本序列stem(n,u);xlabel('时间序号n');ylabel('振幅');title('单位样本序列');axis([-10 20 0 1.2]);1.1运行程序P1.1,以产生单位样本序列u[n]并显示它。
1.2:命令clf,axis,title,xlabel,和ylabel的作用是什么?clf—函数用于清除当前图像窗口。
axis—设置坐标轴的范围和显示方式title—就是给已经画出的图加一个标题xlabel—添加x坐标标注ylabel—添加y坐标标注1.3修改程序P1.1,以产生带有延时11个样本的延迟单位样本序列ud[n]。
运行修改的程序并显示产生的序列。
%程序%产生并绘制一个单位样本序列延时11clf;%产生从-10到20的一个向量n=-10:20;%产生单位样本序列u=[zeros(1,3) 1 zeros(1,27)];%绘制单位样本序列stem(n,u);xlabel('时间序号n');ylabel('振幅');title('单位样本序列');axis([-10 20 0 1.2]);1.5 修改程序P1.1,以产生带有超前7个样本的延时单位阶跃序列sd[n]。
运行修改后的序并显示产生的序列。
%程序%产生并绘制一个单位样本序列超前7clf;%产生从-10到20的一个向量n=-10:20;%产生单位样本序列u=[zeros(1,3) 1 zeros(1,27)];%绘制单位样本序列stem(n,u);xlabel('时间序号n');ylabel('振幅'); title('单位样本序列');axis([-10 20 0 1.2]);P1.2 指数信号%程序P1_2%生成一个复数指数序列clf;c=-(1/12)+(pi/6)*i;k=2;n=0:40;x=k*exp(c*n);subplot(2,1,1);stem(n,real(x));xlabel('时间序号n');ylabel('振幅');title('实部');subplot(2,1,2);stem(n,imag(x));xlabel('时间序号n');ylabel('振幅');title('虚部');1.6 运行程序P1.2,以产生复数值的指数序列。
北京邮电大学电子工程学院电子实验中心<数字信号处理实验>实验报告班级: xxx学院: xxx实验室: xxx 审阅教师:姓名(班内序号): xxx 学号: xxx 实验时间: xxx评定成绩:目录一、常规实验 (3)实验一常用指令实验 (3)1.试验现象 (3)2.程序代码 (3)3.工作原理 (3)实验二数据储存实验 (4)1.试验现象 (4)2.程序代码 (4)3.工作原理 (4)实验三I/O实验 (5)1.试验现象 (5)2.程序代码 (5)3.工作原理 (5)实验四定时器实验 (5)1.试验现象 (5)2.程序代码 (6)3.工作原理 (9)实验五INT2中断实验 (9)1.试验现象 (9)2.程序代码 (9)3.工作原理 (13)实验六A/D转换实验 (13)1.试验现象 (13)2.程序代码 (14)3.工作原理 (18)实验七D/A转换实验 (19)1.试验现象 (19)2.程序代码 (19)3.工作原理 (37)二、算法实验 (38)实验一快速傅里叶变换(FFT)算法实验 (38)1.试验现象 (38)2.程序代码 (38)3.工作原理 (42)实验二有限冲击响应滤波器(FIR)算法实验 (42)1.试验现象 (42)2.程序代码 (42)3.工作原理 (49)实验三无限冲击响应滤波器(IIR)算法实验 (49)1.试验现象 (49)2.程序代码 (49)3.工作原理 (56)作业设计高通滤波器 (56)1.设计思路 (56)2.程序代码 (57)3.试验现象 (64)一、常规实验实验一常用指令实验1.试验现象可以观察到实验箱CPLD右上方的D3按一定频率闪烁。
2.程序代码.mmregs.global _main_main:stm #3000h,spssbx xf ;将XF置1,D3熄灭call delay ;调用延时子程序,延时rsbx xf ;将XF置0,D3点亮call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nopnop;延时子程序delay:stm 270fh,ar3 ;将0x270f(9999)存入ar3loop1:stm 0f9h,ar4 ;将0x0f9(249)存入ar4loop2:banz loop2,*ar4- ;*ar4自减1,不为0时跳到loop2的位置banz loop1,*ar3- ;*ar3自减1,不为0时跳到loop1的位置ret ;可选择延迟的返回nopnop.end3.工作原理主程序循环执行:D3熄灭→延时→D3点亮→延时。
数字信号处理实验报告实验名称:数字信号处理实验学生姓名:班级:班内序号:1.实验要求假设信号x(n) 由下述信号组成:请选择合适的长度N 和窗函数,用DFT 分析其频谱,得到清楚的三根谱线。
2.实验代码和实验结果N = 1000; % Length of DFTn = [0:1:N-1];xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);Xk = fft(xn,N);k=[0:1:N-1];subplot(5,1,1);stem(k,abs(Xk(1:1:N)));title('DFT x(n)');xlabel('k');axis([140,240,0,6])subplot(5,1,2);stem(k, abs(Xk(1:1:N)),'r');%画出sin(0.3npi)-cos(0.302npi-pi/4) axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,3);stem(k, 1000*abs(Xk(1:1:N)),'g');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');subplot(5,1,4);stem(k,0.01*abs(Xk(1:1:N)),'k');%画%sin(0.3npi)-cos(0.302npi-pi/4)axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,5);stem(k, 10*abs(Xk(1:1:N)),'m');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');结论:由上图及过程可知,当DFT变换长度为1000时所得到的谱线非常理想。
北邮DSPMatlab仿真实验《数字信号处理》Matlab 实验⼀.离散信号的 FFT 分析知识点:利⽤FFT 对信号频谱进⾏分析,⽤DFT 进⾏信号分析时基本参数的选择,以及信号经过离散时间傅⽴叶变换(DTFT)与有限长度离散傅⽴叶变换(DFT)后信号频谱上的区别。
实验教学内容:1、⽤Matlab 编程上机练习。
已知: N=25。
这⾥Q=0、9+j0、3。
可以推导出 ,⾸先根据这个式⼦计算X(k)的理论值,然后计算输⼊序列x(n)的32个值,再利⽤基2时间抽选的FFT 算法,计算x(n)的DFT X(k),与X(k)的理论值⽐较(要求计算结果最少6位有效数字)。
解:format longQ=0、9+0、3i;WN=exp(-2*pi*1i/32);Xk=(1-Q^32)、/(1-Q*WN 、^[0:24]);xn=Q 、^[0:24];Xkfft=fft(xn,32);for (k0=1:1:25)difference=Xk(k0)-Xkfft(k0);end;subplot(3,1,1);stem(abs(Xk(1:1:24)),'、');title('DFTx(n)');xlabel('k');axis([0,35,0,15]);subplot(3,1,2);stem(abs(Xkfft(1:1:32)),'g 、');title('FFTx(n)');xlabel('k');axis([0,35,0,15]);subplot(3,1,3);stem(abs(difference(1:1:25)),'r 、');title('Xk-Xkfft');xlabel('k');axis([0,35,0,15]); 0n N-1()0 n 0, n Nn Q x n ?≤≤=?<≥?11,011)()()(k k 10nk 10-=--===∑∑-=-=N k QW Q QW W n x k X N N nN N n NN n Λ,2、假设信号 x(n) 由下述信号组成: 请选择合适的长度 N 与窗函数,⽤ DFT 分析其频谱,得到清楚的三根谱线。
第二次DSP上机实验报告 MATLAB实验报告第二次DSP上机实验报告 MATLAB实验报告北京邮电大学信息与通信工程学院DSP--MATLAB实验报告实验名称:学生姓名:班级:班内序号:学号:日期:1.实验要求与目的要求:(1)用DFT分析频谱,得到高分辨率频谱清楚的谱线;(2)利用基2时间抽选的FFT算法,计算有限点的DFT,并与理论值相比较。
目的:掌握(a)用傅立叶变换进行信号分析时基本参数的选择。
(b)经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT)后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。
(c)离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。
(d)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。
2关键算法分析第1页北京邮电大学信息与通信工程学院代码的重点是利用fft函数计算离散序列的DFT,难点是矩阵的加减乘除及乘方中所涉及的matlab语句的特点。
实验代码如下:(1)N=1000;n=(0:N-1);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);y=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);XK=fft(y,N);--fft函数两个参数分别是进行DFT变换的序列,及DFT 的长度subplot(3,1,1);stem(n,y);title("时域波形");xlabel("n");ylabel("y");subplot(3,1,2);stem(abs(XK),".");axis([0,500,0,600]);--限定x 轴与y轴的范围title("频域前500点波形");xlabel("k");ylabel("XK");subplot(3,1,3);stem(abs(XK),".");axis([800,900,0,600]);--x轴的范围很小,目的是能看到两条很近的谱线title("频域后500点部分波形");xlabel("k");ylabel("XK");(2)N=25;Q=0.9+j*0.3;n=(0:24);x=Q.^n;WN=exp(-j*2*pi/N);k=(0:24);WK=WN.^k;XK=(1-Q.^N)./(1-Q*WK);stem(XK);---理论值的计算XK1=fft(x,32);--32点基2时间抽选法的计算subplot(3,1,1);stem(n,x);title("时域波形");xlabel("n");ylabel("x");subplot(3,1,2);stem(XK);title("频域理论值");xlabel("k");ylabel("XK");subplot(3,1,3);stem(XK1);title("频域波形");xlabel("k");ylabel("XK1");第2页北京邮电大学信息与通信工程学院3.程序运行结果(1)(2)第3页北京邮电大学信息与通信工程学院4.问题分析这次实验的题目相对简单,编程过程中遇到的问题主要是矩阵的加减乘除及乘方运算所对应的matlab语句的规则和fft函数的使用,fft函数的使用方法通过help语句便可查得,其两个参数:第一个是指进行fft运算的序列,第二个值fft运算的长度。
数字信号处理MATLAB仿真实验报告学院:电子工程学院班级:2011211203学号:2011210876姓名:孙月鹏班内序号:04一、实验一:数字信号的FFT分析、实验内容及要求JTit /j> 1 *<!>*;((> 45/JJT )・} et>s(O 102 J.T )4(1离散信号的频谱分析: 设信号此信号的0.3pi和0.302pi两根谱线相距很近,谱线0.45pi的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。
(2 DTMF信号频谱分析用计算机声卡采用一段通信系统中电话双音多频DTMF)拨号数字0〜9的数据,采用快速傅立叶变换FFT)分析这10个号码DTMF拨号时的频谱2、实验结果x(n的时域图与频谱:得到三根清晰的谱线号码9的频谱号码8的频谱号码7的频谱号码6的频谱、实现代码及分析(1第一小题: k=1000; %DFT 点数n=[1:1:k]; %对时域信号进行采样x=0.001*cos(0.45*n*pi+sin(0.3*n*pi-cos(0.302*n*pi-pi/4; subplot(2,1,1;stem(n,x,'.'; %用.画出时域图title('时域序列:xlabel('n';ylabel('x(n';xk=fft(x,k; %进行K点DFT变换w=2*pi/k*[0:1:k-1]; %数字角频率subplot(2,1,2;stem(w/pi,abs(xk;% 画出频谱图axis([0.2,0.5,0,2]; %设置窗函数的宽度与限幅title('1OOO 点dft';xlabel('数字频率';ylabel('|xk(k|';%此题关键在于DFT点数N的确定。
经过计算和实验,当N=1000时能满足题目要求,看到3条清晰地谱线(2)第二小题clear;closeall;f=[941 1336;697 1209;697 1336;6971477;770 1209;770 1336;7701477;8521209;852 1336;852 1477]%0-9的频率n=1:400;fs=4000; % 取样频率为4000hzfprintf( '请输入数字(0 to 9:\n'k=input (''f1=f(k+1,1; %因为从0开始计算,+1得输f2=f(k+1,2; %入数字的两个频率N=400;x1=sin(2*pi*f1*n/fs+sin(2*pi*f2*n/fs; %DTMF 的输入信号时域xn=[x1,zeros(1,400]; %补零subplot(2,1,1;plot(xn %画出时域图xxxxxx(' n'yyyyyy('x n'subplot(2,1,2;fn=fs*n/N; %取样点的频率plot(fn,abs(fft(xn(1:400; %400点fft变换,画出频谱图axis([0,4000,0,300]xxxxxx('fyyyyyy('FFT'二、实验二:DTMF信号的编码1、实验内容及要求1)把您的联系电话号码通过DTMF编码生成为一个.wav文件。
实验1 离散时间信号的时域分析一、实验目的(1)了解MATLAB 语言的主要特点及作用;(2)熟悉MATLAB 主界面,初步掌握MATLAB 命令窗和编辑窗的操作方法;(3)学习简单的数组赋值、数组运算、绘图的程序编写;(4)了解常用时域离散信号及其特点;(5)掌握MATLAB 产生常用时域离散信号的方法。
二、知识点提示本章节的主要知识点是利用MATLAB 产生数字信号处理的几种常用典型序列、数字序列的基本运算;重点是单位脉冲、单位阶跃、正(余)弦信号的产生;难点是MATLAB 关系运算符“==、>=”的使用。
三、实验内容1. 在MATLAB 中利用逻辑关系式0==n 来实现()0n n -δ序列,显示范围21n n n ≤≤。
(函数命名为impseq(n0,n1,n2))并利用该函数实现序列:()()()632-+-=n n n y δδ;103≤≤-nn 0212. 在MATLAB 中利用逻辑关系式0>=n 来实现()0n n u -序列,显示范围21n n n ≤≤。
(函数命名为stepseq(n0,n1,n2))并利用该函数实现序列:()()()20522≤≤--++=n n u n u n y3. 在MATLAB 中利用数组运算符“.^”来实现一个实指数序列。
如: ()()5003.0≤≤=n n x n4. 在MATLAB 中用函数sin 或cos 产生正余弦序列,如:()()2003.0cos 553.0sin 11≤≤+⎪⎭⎫ ⎝⎛+=n n n n x πππ5. 已知()n n x 102cos 3π=,试显示()()()3,3,+-n x n x n x 在200≤≤n 区间的波形。
6. 参加运算的两个序列维数不同,已知()()6421≤≤-+=n n u n x ,()()8542≤≤--=n n u n x ,求()()()n x n x n x 21+=。
实验一:线型与离散图x=0:0.1*pi:2*pi;y=sin(x);figure(1);subplot(1,2,1);plot(x,y,'k');xlabel('x');ylabel('y');subplot(1,2,2);stem(x,y,'k');xlabel('x');ylabel('y');实验二:函数:function[X,wk]=DFT(x,M)N=length(x);n=0:N-1;for k=0:M-1wk(k+1)=2*pi/M*k;X(k+1)=sum(x.*exp(-j*wk(k+1)*n)); endclc;clear all;A=444.128;a=50*sqrt(2)*pi;w0=50*sqrt(2)*pi;fs=input('输入采样频率fs=');T=1/fs;N=50;n=0:N-1;xa=A*exp(-a*n*T).*sin(w0*n*T); subplot(1,2,1);stem(n,xa,'.');grid;M=100;[Xa,wk]=DFT(xa,M);f=wk*fs/(2*pi);subplot(1,2,2);plot(f,abs(Xa));grid;1000hz500hz200hzDFT程序:Clcclear allxbn=[1,0,0,0];hbn=[1,2.5,2.5,1]N=4;n=0:N-1;Xb=fft(xbn,N);Xh=fft(hbn,N);ybn=conv(xbn,hbn); subplot(3,2,1); stem(n,xbn,'.');title('xbn wave'); subplot(3,2,2); stem(n,abs(Xb),'.'); title('Xb wave');subplot(3,2,3);stem(n,hbn,'.');title('hbn wave'); subplot(3,2,4);stem(n,abs(Xh),'.'); title('Xh wave');n1=0:6;Xy=fft(ybn,8);subplot(3,2,5);stem(n1,ybn,'.');title('ybn wave')n2=0:7;subplot(3,2,6);stem(n2,abs(Xy),'.'); title('Xy wave结果:hbn =1.00002.5000 2.5000 1.0000实验三:第一个方程:clc;clear all;a1=[1 ,0.75,0.125];b1=[1,-1];n=0:20;x1=[1 zeros(1,20)];subplot(2,3,1);y1filter=filter(b1,a1,x1); stem(n,y1filter);title('y lfilter');xlabel('x');ylabel('y');x1=[1 zeros(1,10)];[h]=impz(b1 ,a1,10); subplot(2,3,2);y1conv=conv(h,x1);n=0:19;stem(n,y1conv,'filled') subplot(2,3,3);impz(b1 ,a1,21);n=0:20;x2=ones(1,21);subplot(2,3,4);y1filter=filter(b1,a1,x2); stem(n,y1filter);title('y1filter_step'); xlabel('x');ylabel('y');x2=ones(1,21);[h]=impz(b1,a1,20);y1=conv(h,x2);y1conv=y1(1:21);n1=0:20;subplot(2,3,5);stem(n1,y1conv,'filled'); title('y1conv');xlabel('n');ylabel('y1[n]');subplot(2,3,6);b1=1;impz(b1,a1);第二个方程:clc;clear all;a1=[1];b1=[0.25,0.25,0.25,0.25]; n=0:20;x1=[1 zeros( 1,20)];y1filter=filter(b1,a1,x1); subplot(2,3,1);stem(n,y1filter);title('y 1filter');xlabel('x');ylabel('y');x1=[1 zeros(1,10)];[h]=impz(b1,a1,10);y1conv=conv(h,x1);n=0:19;subplot(2,3,2);stem(n,y1conv,'filled') subplot(2,3,3);impz(b1,a1,21);n=0:20;x2=ones(1,21);y1filter=filter(b1,a1,x2); subplot(2,3,4);stem(n,y1filter);title('y1filter_step'); xlabel('x');ylabel('y');x2=ones(1,21);[h]=impz(b1,a1,20);y1=conv(h,x2);y1conv=y1(1:21);n1=0:20;subplot(2,3,5);stem(n1,y1conv,'filled');title('y1conv');xlabel('n');ylabel('y1[n]');subplot(2,3,6);n=0:20;a1=1;b1=[0,0.25,0.5,0.75,ones(1,17)] ;impz(b1,a1,21);第一个方程结果第二个方程结果:实验四:程序:clc;clear all;num=[0.0528 0.0797 0.1295 0.1295 0.797 0.0528];den=[1 -1.8107 2.4947 -1.8801 0.9537 -0.2336];[z,p,k]=tf2zp(num,den);m=abs(p);disp('零点');disp(z);disp('极点');disp(p);disp('增益系数');disp(k);sos=zp2sos(z,p,k);figure(1)subplot(2,3,5);zplane(num,den)k=256;w=0:pi/k:pi;h=freqz(num,den,w);subplot(2,3,1);plot(w/pi,real(h));grid title('实部')xlabel('\omega/\pi');ylabel('幅度')subplot(2,3,2);plot(w/pi,imag(h));gridtitle('虚部')xlabel('\omega/\pi');ylabel('Am plitude')subplot(2,3,3);plot(w/pi,abs(h));gridtitle('幅度谱')xlabel('\omega/\pi');ylabel('幅值')subplot(2,3,4);plot(w/pi,angle(h));gridtitle('相位谱')xlabel('\omega/\pi');ylabel('弧度')figure(2)freqz(num,den,128);结果:零点-1.5870 + 1.4470i -1.5870 - 1.4470i 0.8657 + 1.5779i 0.8657 - 1.5779i -0.0669 + 0.0000i 极点0.2788 + 0.8973i 0.2788 - 0.8973i 0.3811 + 0.6274i 0.3811 - 0.6274i 0.4910 + 0.0000i 增益系数0.0528实验五:clc;clear all;wp=input('通带内频率wp=');ap=input('容许幅度误差ap=');ws=input('频率ws=');as=input('阻带衰减as=');fs=1;[N,Wn]=buttord(wp,ws,ap,as,'s'); [Z,P,K]=buttap(N);[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,fs);[H,W]=freqz(bz,az,64);subplot(2,1,1);stem(W/pi,abs(H));grid;xlabel('频率');ylabel('幅度');subplot(2,1,2);stem(W/pi,20*log10(abs(H))); grid;xlabel('频率');ylabel('幅度(dB)');bzaz结果:通带内频率wp=0.1*pi容许幅度误差ap=0.5频率ws=0.5*pi阻带衰减as=20bz =0.0238 0.0714 0.0714 0.0238 az =1.0000 -1.6217 1.0505 -0.2384实验六:Blackman方式:clc;clear all;b=fir1(21,0.5,blackman(22)); figure(1);y=freqz(b,1);subplot(2,2,1);plot(abs(y));grid;title('幅度响应');subplot(2,2,2); plot(angle(y)); grid;title('相位响应'); subplot(2,2,3); cj=impz(b,1,20); stem(cj);title('冲激响应'); grid;Hamming方式:clc;clear all;b=fir1(21,0.5,hamming(22)); figure(1);y=freqz(b,1);subplot(2,2,1);plot(abs(y));grid;title('幅度响应');subplot(2,2,2); plot(angle(y)); grid;title('相位响应'); subplot(2,2,3); cj=impz(b,1,20); stem(cj);title('冲激响应'); grid;Hanning方式:clc;clear all;b=fir1(21,0.5,hanning(22)); figure(1);y=freqz(b,1);subplot(2,2,1);plot(abs(y));grid;title('幅度响应');subplot(2,2,2); plot(angle(y)); grid;title('相位响应'); subplot(2,2,3); cj=impz(b,1,20); stem(cj);title('冲激响应'); grid;实验七:0个过渡点:clc;clear all;N=64;wc=0.8*pi;k=0:N-1;phase=(-pi*k*(N-1)/N+pi/2);HK=[zeros(1,26),ones(1,13),zero s(1,25)];HK1=HK.*exp(j*phase);hn=ifft(HK1,N);figure(1);freqz(hn,1,512);[H,W]=freqz(hn,1,512);figure(2);subplot(3,1,1);stem(k,hn);title('h(n)')subplot(3,1,2);plot(W/pi,abs(H));title('|H(eiw)|')subplot(3,1,3);plot(W/pi,20*log10(abs(H))); title('20lg|H(eiw)|');clc;clear all;N=64;wc=0.8*pi;k=0:N-1;phase=(-pi*k*(N-1)/N+pi/2);HK=[zeros(1,25),0.5,ones(1,13), 0.5,zeros(1,24)];HK1=HK.*exp(j*phase);hn=ifft(HK1,N); figure(1);freqz(hn,1,512);[H,W]=freqz(hn,1,512);figure(2);subplot(2,1,1);plot(W/pi,abs(H));title('|H(eiw)|')subplot(2,1,2);plot(W/pi,20*log10(abs(H))); title('20lg|H(eiw)|');clc;clear all;N=64;wc=0.8*pi;k=0:N-1;phase=(-pi*k*(N-1)/N+pi/2);HK=[zeros(1,24),1/3,2/3,ones(1, 13),2/3,1/3,zeros(1,23)];HK1=HK.*exp(j*phase);hn=ifft(HK1,N); figure(1);freqz(hn,1,512);[H,W]=freqz(hn,1,512);figure(2);subplot(2,1,1);plot(W/pi,abs(H));title('|H(eiw)|')subplot(2,1,2);plot(W/pi,20*log10(abs(H))); title('20lg|H(eiw)|');实验八:clc;clear all;x=[4,-2,0,-4,-6 ...-4,-2, -4,-6,-6 ...-4,-4,-6, -6,-2 ...6,12,8,0,-16, -38 ...-60,-84,-90,-66 ...-32,-4,-2,-4,8,12 ...12, 10,6,6,6,4,0,0 ...0,0,0, -2,-4,0,0,0 ...-2,-2,0, 0,-2,-2 ...-2,-2,0];subplot(3,1,1);plot([0:length(x)-1],x,'k'); title('输入')N=21;wn=hamming(N+1);wp=0.2*pi; h=fir1(N,wp/pi,wn);y=conv(x,h);subplot(3,1,2);plot([0:length(y)-1],y,'r'); title('经FIR滤波')A=0.2318;a=A*[1,2,1];b1=[1,0.4164,-0.6006];b2=[1,0.3093,-0.1888];b3=[1,0.2692,-0.0349];y1=filter(a,b1,x);y2=filter(a,b2,y1);y3=filter(a,b3,y2);subplot(3,1,3);plot([0:length(y3)-1],y3,'m'); title('经IIR滤波')。
数字信号处理实验报告基础实验篇实验一离散时间系统及离散卷积一、实验原理利用Matlab软件计算出系统函数的零极点分布、单位脉冲响应和系统频率响应等的图像并于笔算结果进行比较,找出异同。
编译合适程序能计算取值范围不同的离散卷积。
二、实验目的(1)熟悉MATLAB软件的使用方法。
(2)熟悉系统函数的零极点分布、单位脉冲响应和系统频率响应等概念。
(3)利用MATLAB绘制系统函数的零极点分布图、系统频率响应和单位脉冲响应。
三、实验步骤(1)自编并调试实验程序,并且,给实验程序加注释;(2)按照实验内容完成笔算结果;(3)验证计算程序的正确性,记录实验结果。
(4)至少要求一个除参考实例以外的实验结果,在实验报告中,要描述清楚实验结果对应的系统,并对实验结果进行解释说明。
四、实验源程序及实验结果实验二 离散傅立叶变换与快速傅立叶变换一、 实验原理对有限长序列使用离散Fouier 变换(DFT)可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N 时,它的DFT 定义为()()[]()∑==-=1N n nk N W n x n x DFT k X 10-≤≤N k反变换为()()[]()∑==-=-101N n nkN W k X N k X IDFT n x 10-≤≤N n 有限长序列的DFT 是其Z 变换在单位圆上的等距采样,或者说是序列Fourier 变换的等距采样,因此可以用于序列的谱分析。
FFT 是为了减少DFT 运算次数的一种快速算法。
它是对变换式进行一次次分解,使其成为若干较短序列的组合,从而减少运算量。
常用的FFT 是以2为基数的,其长度。
它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT ,可以用末位补零的方法,使其长度延长至2的整数次方。
用FFT 可以实现两个序列的圆周卷积。
在一定的条件下,可以使圆周卷积等于线性卷积。
实验一:数字信号的产生和基本运算
(1) 常用数字信号序列的产生:
熟悉Matlab产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。
请用Matlab画出下列序列的波形(-10<n<10):
a) δ(n)
b) 单位阶跃序列2u(n-5)
c) 矩形序列R(n)
d) y(n)=2sin(0.3πn)+0.5cos2(0.6πn)
(2)数字信号的基本运算:
a)加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。
b)请用您的计算机声卡采用一段您自己的声音x(n),长度为45喵,单声道。
取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n)按下式叠加为一个声音信号z(n):
z(n)=0.7x(n)+0.3y(n)
(3)要求:
a)在同一个figure中,画出采集声音x(n)、背景音乐y(n)和混音z(n)的时域波形;
b)提交实验报告时,请把声音文件转换成mp3格式,图像转换为jpeg格式,以节省存储空间。
C)通过本次实验,掌握matlab中这些基本运算命令,对数字信号处理有一个基本概念,为后面的数字信号分析和滤波打下了基础。
(1):
a)利用.m文件
M文件代码:
function[x,n]=delta(n0,n1,n2)
if((n0<n1)||(n2<n1)||(n2<n0))
error('false')
end
n=n1:n2;
x=(n-n0)==0;
图象为:
b)利用.m文件
M文件代码:
function[x,n]=u(n0,n1,n2)
if((n0<n1)||(n2<n1)||(n2<n0)) error('false')
end
n=n1:n2;
x=(n-n0)>=0;
实现2u(n-5)的命令是:
>> x=2*u(5,-10,10);
>> n=-10:10;
>> stem(n,x)
图像为:
c)利用.m文件
M文件代码:
function[x,n]=R(n0,n1,n2,n3)
if((n0<n2)||(n1>n3)||(n0>n1)||(n2>n3)) error('false')
end
n=n2:n3;
x=(n>=n0)-(n>=n1);
实现R(n)的命令是:
>> x=R(-2,3,-10,10);
>> n=-10:10;
>> stem(n,x)
图像为:
d)命令如下:
>> n=-10:0.1:10;
>> y=2*sin(0.3*pi*n)+0.5*cos(2*(0.6*pi*n)); >> stem(n,y)
图像为:
(2)
a)
相加:δ(n)+2u(n-5) 命令如下:
>> n=-10:10;
>> y1=delta(0,-10,10); >> y2=2*u(5,-10,10); >> stem(n,y1+y2)
图像为:
乘法:2u(n-5)*R(n) 命令如下:
>> n=-10:10;
>> y1=u(0,-10,10); >> y2=R(-2,3,-10,10); >> stem(n,y1.*y2)
图像为:
移位:y(n)=2sin(0.3πn)+0.5cos2(0.6πn)右移两位命令如下:
>> n=-10:0.1:10;
>> y=2*sin(0.3*pi*(n-2))+0.5*cos(2*(0.6*pi*(n-2))); >> stem(n,y)
图像为:
b)音频处理:
>> [record,fs,bits]=wavread('record.wav');
>> [background,fs,bits]=wavread('background.wav');
>> x=record((fs*0+1:fs*45),:);
>> y=background((fs*0+1:fs*45),:);
>> z=0.7*x+0.3*y;
>> wavwrite(z,fs,bits,'music.wav');
>> subplot(3,1,1),plot(x),title('record');
>> subplot(3,1,2),plot(y),title('background');
>> subplot(3,1,3),plot(z),title('music');
//此时的录音是用audition录的,也可以用matlab自带的wavrecord函数来录音。
图像为:。