数字信号处理实验1--5含代码
数字信号处理上机实验代码

数字信号处理上机实验代码文件名:tstem.m(实验一、二需要)程序:f unction tstem(xn,yn)%时域序列绘图函数%xn:被绘图的信号数据序列,yn:绘图信号的纵坐标名称(字符串)n=0:length(xn)-1;stem(n,xn,'.');xlabel('n');ylabel('yn');axis([0,n(end),min(xn),1.2*max(xn)]);文件名:tplot.m(实验一、四需要)程序:function tplot(xn,T,yn)%时域序列连续曲线绘图函数%xn:信号数据序列,yn:绘图信号的纵坐标名称(字符串)%T为采样间隔n=0;length(xn)-1;t=n*T;plot(t,xn);xlabel('t/s');ylabel(yn);axis([0,t(end),min(xn),1.2*max(xn)]);文件名:myplot.m(实验一、四需要)%(1)myplot;计算时域离散系统损耗函数并绘制曲线图。
function myplot(B,A)%B为系统函数分子多项式系数向量%A为系统函数分母多项式系数向量[H,W]=freqz(B,A,1000)m=abs(H);plot(W/pi,20*log10(m/max(m)));grid on;xlabel('\omega/\pi');ylabel('幅度(dB)')axis([0,1,-80,5]);title('损耗函数曲线');文件名:mstem.m(实验一、三需要)程序:function mstem(Xk)%mstem(Xk)绘制频域采样序列向量Xk的幅频特性图M=length(Xk);k=0:M-1;wk=2*k/M;%产生M点DFT对应的采样点频率(关于pi归一化值)stem(wk,abs(Xk),'.');box on;%绘制M点DFT的幅频特性图xlabel('w/\pi');ylabel('幅度');axis([0,2,0,1.2*max(abs(Xk))]);文件名:mpplot.m(实验一需要)%(2)mpplot;计算时域离散系统损耗函数和相频特性函数,并绘制曲线图。
数字信号处理实验报告1

实验一序列的产生姓名:高洪美学号:0819419213 班级:生医5班一、实验目的:熟悉MATLAB中产生信号和绘制信号的基本命令。
二、实验环境:基于Windows PC的MATLAB。
三、实验内容:1、单位样本和单位阶跃序列;2、指数信号;3、正弦序列;4、随机信号。
四、实验过程:(一)单位样本和单位阶跃序列:Q1.1运行程序P1.1以产生单位样本序列u[n]并显示它:程序:clf;% Generate a vector from -10 to 20n = -10:20;% Generate the unit sample sequenceu = [zeros(1,10) 1 zeros(1,20)];% Plot the unit sample sequencestem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-10 20 0 1.2]);所得图像如下所示:Q1.2 命令clf,axis,title,xlable和ylable的作用是什么:答:clf:运行程序时弹出显示图像的面板;Axis:规定横纵坐标的范围;Title:使图像面板上方显示相应的题目名称;Xlable:定义横坐标的名字;Ylable:定义纵坐标的名字。
Q1.3 修改程序P1.1以产生带有延时11个样本的延迟单位样本序列ud[n],运行修改的程序并且显示产生的序列。
程序:clf;% Generate a vector from 0 to 30n = 0:30;% Generate the unit sample sequenceud = [zeros(1,11) 1 zeros(1,19)];% Plot the unit sample sequencestem(n,ud);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([0 30 0 1.2]);所得图像如下所示:Q1.4修改程序P1.1以产生单位步长序列s[n]。
数字信号处理实验报告_完整版

实验1 利用DFT 分析信号频谱一、实验目的1.加深对DFT 原理的理解。
2.应用DFT 分析信号的频谱。
3.深刻理解利用DFT 分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境 计算机、MATLAB 软件环境 三、实验基础理论1.DFT 与DTFT 的关系有限长序列 的离散时间傅里叶变换 在频率区间 的N 个等间隔分布的点 上的N 个取样值可以由下式表示:212/0()|()()01N jkn j Nk N k X e x n eX k k N πωωπ--====≤≤-∑由上式可知,序列 的N 点DFT ,实际上就是 序列的DTFT 在N 个等间隔频率点 上样本 。
2.利用DFT 求DTFT方法1:由恢复出的方法如下:由图2.1所示流程可知:101()()()N j j nkn j nN n n k X e x n eX k W e N ωωω∞∞----=-∞=-∞=⎡⎤==⎢⎥⎣⎦∑∑∑ 由上式可以得到:IDFTDTFT( )12()()()Nj k kX e X k Nωπφω==-∑ 其中为内插函数12sin(/2)()sin(/2)N j N x eN ωωφω--= 方法2:实际在MATLAB 计算中,上述插值运算不见得是最好的办法。
由于DFT 是DTFT 的取样值,其相邻两个频率样本点的间距为2π/N ,所以如果我们增加数据的长度N ,使得到的DFT 谱线就更加精细,其包络就越接近DTFT 的结果,这样就可以利用DFT 计算DTFT 。
如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT 分析连续信号的频谱采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号,按采样间隔T 进行采样,阶段长度M ,那么:1()()()M j tj nT a a a n X j x t edt T x nT e ∞--Ω-Ω=-∞Ω==∑⎰对进行N 点频域采样,得到2120()|()()M jkn Na a M kn NTX j T x nT eTX k ππ--Ω==Ω==∑因此,可以将利用DFT 分析连续非周期信号频谱的步骤归纳如下: (1)确定时域采样间隔T ,得到离散序列(2)确定截取长度M ,得到M 点离散序列,这里为窗函数。
西安交通大学数字信号处理实验报告

数字信号处理实验报告班级:硕姓名:学号:实验1 常见离散信号的MATLAB 产生和图形显示实验目的:加深对常用离散信号的理解;实验内容:(1)单位抽样序列clc;x=zeros(1,11); x(1)=1; n=0:1:10;stem(n,x, 'fill'); title('单位抽样序列'); xlabel('n'); ylabel('x[n]')延迟5个单位:clc;x=zeros(1,11); x(6)=1; n=0:1:10;stem(n,x, 'fill'); title('单位抽样序列'); xlabel('n'); ylabel('x[n]')nx [n ](2)单位阶跃序列clc;x=[zeros(1,5),ones(1,6)]; n=-5:1:5;stem(n,x,'fill'); title('单位阶跃序列'); xlabel('n'); ylabel('x[n]');nx [n ](3)正弦序列clc; N=50; n=0:1:N-1; A=1; f=1; Fs=50; fai=pi;x=A*sin(2*pi*f*n/Fs+fai); stem(n,x,'fill'); title('正弦序列'); xlabel('n'); ylabel('x[n]'); axis([0 50 -1 1]);nx [n ](4)复正弦序列clc; N=50; n=0:1:N-1; w=2*pi/50; x=exp(j*w*n); subplot(2,1,1); stem(n,real(x)); title('复正弦序列实部'); xlabel('n');ylabel('real(x[n])'); axis([0 50 -1 1]); subplot(2,1,2); stem(n,imag(x)); title('复正弦序列虚部'); xlabel('n');ylabel('imag(x[n])'); axis([0 50 -1 1]);nx [n ](5)指数序列clc; N=10; n=0:1:N-1; a=0.5; x=a.^n;stem(n,x,'fill'); title('指数序列'); xlabel('n'); ylabel('x[n]'); axis([0 10 0 1]);nr e a l (x [n ])ni m a g (x [n ])(6)复指数序列性质讨论:0(j )()enx n σω+=将复指数表示成实部与虚部为00()e cos j sin n n x n n e n σσωω=+1.当σ=0时,它的实部和虚部都是正弦序列。
数字信号处理实验报告1-5

实验一时域离散信号的产生及时域处理实验目的:了解Matlab软件数字信号处理工具箱的初步使用方法。
掌握其简单的Matlab语言进行简单的时域信号分析。
实验内容:[1.1]已知两序列x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6];x2=[2,2,0,0,0,-2,-2],n2=[2:8].求他们的和ya及乘积yp. 程序如下:x1=[0,1,2,3,4,3,2,1,0];ns1=-2;x2=[2,2,0,0,0,-2,-2];ns2=2;nf1=ns1+length(x1)-1;nf2=ns2+length(x2)-1;ny=min(ns1,ns2):max(nf1,nf2);xa1=zeros(1,length(ny));xa2=xa1;xa1(find((ny>=ns1)&(ny<=nf1)==1))=x1;xa2(find((ny>=ns2)&(ny<=nf2)==1))=x2;ya=xa1+xa2yp=xa1.*xa2subplot(4,4,1),stem(ny,xa1,'.')subplot(4,1,2),stem(ny,xa2,'.')line([ny(1),ny(end)],[0,0])subplot(4,1,3),stem(ny,ya,'.')line([ny(1),ny(end)],[0,0])subplot(4,1,4),stem(ny,yp,'.')line([ny(1),ny(end)],[0,0])[1.2]编写产生矩形序列的程序。
并用它截取一个复正弦序列,最后画出波形。
程序如下:clear;close alln0=input('输入序列起点:n0=');N=input('输入序列长度:N=');n1=input('输入位移:n1=');n=n0:n1+N+5;u=[(n-n1)>=0];x1=[(n-n1)>=0]-[(n-n1-N)>=0];x2=[(n>=n1)&(n<(N+n1))];x3=exp(j*n*pi/8).*x2;subplot(2,2,1);stem(n,x1,'.');xlabel('n');ylabel('x1(n)');axis([n0,max(n),0,1]);subplot(2,2,3);stem(n,x2,'.');xlabel('n');ylabel('x2(n)');axis([n0,max(n),0,1]);subplot(2,2,2);stem(n,real(x3),'.'); xlabel('n');ylabel('x3(n)的实部');line([n0,max(n)],[0,0]);axis([n0,max(n),-1,1]);subplot(2,2,4);stem(n,imag(x3),'.'); xlabel('n');ylabel('x3(n)的虚部');line([n0,max(n)],[0,0]);axis([n0,max(n),-1,1]);[1.3]利用已知条件,利用MATLAB生成图形。
(完整word版)数字信号处理实验05

实验五2019年12月5日一、实验目的1。
加深对数字滤波器分类与结构的了解。
2.掌握数字滤波器各种结构相互间的转换方法与MATLAB子函数.3。
加深对模拟滤波器基本类型、特点和主要设计指标的了解。
4.掌握模拟低通滤波器原型的设计方法与相关MATLAB子函数。
5。
理解模拟频域变换法,掌握使用模拟低通滤波器原型进行频率变换及设计低通、高通、带通、带阻滤波器的方法。
6。
了解模拟频率变换的MATLAB子函数及其使用方法.7。
理解脉冲响应不变法设计IIR数字滤波器的基本方法,掌握使用模拟滤波器原型进行脉冲响应变换的方法。
8.了解脉冲响应变换的MATLAB子函数及其使用方法.二、实验用到的MATLAB函数1。
tf2latc 将数字滤波器由直接型转换为格型结构2。
latc2tf 将数字滤波器由格型结构转换为直接型3.buttord 确定巴特沃兹滤波器的阶数和3dB截止频率4.cheb1ord 确定切比雪夫I型滤波器的阶数和3dB截止频率5。
cheb2ord 确定切比雪夫II型滤波器的阶数和3dB截止频率6。
ellipord 确定椭圆滤波器的阶数和3dB截止频率7。
buttap 巴特沃兹模拟低通滤波器原型8。
cheb1ap 切比雪夫I型模拟低通滤波器原型9.cheb2ap 切比雪夫II模拟低通滤波器原型10.ellipap 椭圆模拟低通滤波器原型11。
poly 求某向量制定根所对应的特征多项式12。
poly2str 以习惯方式显示多项式13.pzmap 显示连续系统的零极点分布图14.lp2lp 低通到低通模拟滤波器转换15.lp2hp 低通到高通模拟滤波器转换16.lp2bp 低通到待遇模拟滤波器转换17。
lp2bs 低通到带阻模拟滤波器转换18.set 设置图形对象属性19。
impinvar 用脉冲响应不变法实现模拟到数字的滤波器转换三、实验原理1。
数字滤波器的分类离散LSI系统对信号的响应过程实际上就是对信号进行滤波的过程.因此,离散LSI系统又称为数字滤波器。
数字信号处理实验1--5含代码

数字信号处理实验1--5含代码实验一离散时间信号的时域分析 1. 在MATLAB中利用逻辑关系式n,,0来实现序列,显示范围。
(产生如下,,,n,nn,n,n012图所示的单位脉冲信号的函数为impseq(n0,n1,n2),程序如示例所示),3,n,10并利用impseq函数实现序列:; ,,,,,,yn,2,n,3,,n,6,,xn1nnnn120源代码:impseq.mfunction y=impseq(n0,n1,n2)n=[n1:n2]y=[(n-n0)==0]exp01-1.mfunction impseq(n0,n1,n2)n=-3:1:10y=2*impseq(3,-3,10)+impseq(6,-3,10);stem(n,y)n,,0,,2. 在MATLAB中利用逻辑关系式来实现序列,显示范围。
(自己编写un,nn,n,n012产生单位阶跃信号的函数,函数命名为stepseq(n0,n1,n2)) 并利用编写的stepseq函数实现序列: ,,,,,,yn,un,2,un,2,5,n,10源代码:stepseq.mfunction y=stepseq(n0,n1,n2)n=n1:1:n2y=[(n-n0)>=0]exp01-2.mfunction stepseq(n0,n1,n2)n=-5:1:20y=stepseq(-2,-5,20)+stepseq(2,-5,20)stem(n,y)3. 在MATLAB中利用数组运算符“.^”来实现一个实指数序列。
如: n ,,,,xn,0.30,n,15源代码:n=0:1:15;x=0.3.^nstem(n,x)4. 在MATLAB中调用函数sin或cos产生正余弦序列,如:π,, ,,,,xn,3sin0.4πn,,5cos0.3πn0,n,20,,5,,源代码:n=0:1:20x=11*sin(0.3*pi*n+pi/5)+5*cos(0.3*pi*n)stem(n,x)思考题:1.在MATLAB环境下产生单位脉冲序列和单位阶跃序列各有几种方法,如何使用,2.在MATLAB环境下进行序列的相乘运算时应注意什么问题,实验二离散时间系统的时域分析1. 在MATLAB中利用内部函数conv来计算两个有限长序列的卷积。
数字信号实验报告 (全)

三、实验内容和步骤
对以下典型信号进行谱分析:
x1 (n) R4 (n) n 1, x 2 (n) 8 n, 0 , 4 n, x3 (n) n 3, 0, 0n3 4n7
其它n
0n3 4n7
其它n
nห้องสมุดไป่ตู้
x4 ( n) cos
4
用 FFT 对信号作频谱分析是学习数字信号处理的重要内容。 经常需要进行谱 分析的信号是模拟信号和时域离散信号。 对信号进行谱分析的重要问题是频谱分 辨率 D 和分析误差。 频谱分辨率直接和 FFT 的变换区间 N 有关, 因为 FFT 能够实 现的频率分辨率是 2π /N≤D。可以根据此时选择 FFT 的变换区间 N。误差主要 来自于用 FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续 谱,只有当 N 较大时离散谱的包络才能逼近于连续谱,因此 N 要适当选择大一 些。 周期信号的频谱是离散谱,只有用整数倍周期的长度作 FFT,得到的离散谱 才能代表周期信号的频谱。 如果不知道信号周期,可以尽量选择信号的观察时间 长一些。 对模拟信号的频谱时, 首先要按照采样定理将其变成时域离散信号。如果是 模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照 周期序列的谱分析进行。
3 k 1
1
0.7051 z 2
0.0007378 1 z 1 1 1.0106 z 1 0.3583 z 2 1 0.9044 z 1 0.2155 z 2
6
H k z
(2.1)
式中:
H k z
A 1 2 z 1 z 2 ,k 1, 2, 3 1 Bk z 1 Ck z 2
数字信号处理实验5

数字信号处理实验五张达成 201000121241 通信二班有限长信号11()cos ()16N n x n R n π⎛⎫= ⎪⎝⎭,21()cos cos ()162N n n x n R n ππ⎡⎤⎛⎫⎛⎫=+ ⎪ ⎪⎢⎥⎝⎭⎝⎭⎣⎦分别通过单位冲激响应为22()0.51cos ()1N n h n R n N π⎡⎤⎛⎫=- ⎪⎢⎥-⎝⎭⎣⎦的FIR 系统。
1、如1128N =、215N =,计算系统的输出信号,画出输入信号和输出信号的波形。
采用的方式如下: (1)差分方程递推 (2)调用conv 函数计算 (3)调用filter 函数计算 (4)利用DFT 计算输入信号:N=128;n1=0; n2=N-1; n=n1:1:n2;x1=cos(n*pi/16);x2=cos(n*pi/16)+cos(n*pi/2); subplot(2,1,1); stem(n,x1); xlabel('n'); ylabel('x1(n)'); subplot(2,1,2); stem(n,x2); xlabel('n'); ylabel('x2(n)');输入信号图象:nx 1(n )nx 2(n )图0 输入信号波形分析:两个输入信号均为周期信号,其中信号1的周期T 1=32,信号2的周期T 2=32. 1.差分方程递推方法:根据公式1()()()M Nm k m k y n b x n m a y n k ===-+-∑∑,FIR 系统没有反馈,故a k =0,故通过编写卷积子函数计算y (n ) 卷积子函数:function [y ny] = xconvh(x,nx,h,nh) L1=length(nx); L2=length(nh); ny1=nx(1)+nh(1); ny2=nx(L1)+nh(L2); ny=ny1:ny2;y=zeros(1,length(ny)); for n=1:length(ny) y(n)=0;for m=max(n-L2,1):min(L1,n-1) y(n)=y(n)+x(m)*h(n-m);%循环计算卷积end end递推编程:N=128; n1=0;n2=N-1; n=n1:1:n2;x1=cos(n*pi/16);x2=cos(n*pi/16)+cos(n*pi/2); N2=15; nn=0:N2-1;hn=0.5*(1-cos(2*pi*nn/(N2-1))); [y1 ny1]=xconvh(x1,n,hn,nn); [y2 ny2]=xconvh(x2,n,hn,nn); subplot(2,1,1); stem(ny1,y1); xlabel('n'); ylabel('y1(n)'); subplot(2,1,2); stem(ny2,y2); xlabel('n'); ylabel('y2(n)'); 编程图象:ny 1(n )ny 2(n )图1-1 差分方程递推系统输出分析:从输出图象可以看出,虽然两个输入信号波形明显不同,但是输出信号波形相同。
《数字信号处理》实验及代码

实验一 用Matlab 进行数字信号处理一、实验目的1.掌握 MATLAB 基本的操作;2.学习典型的离散信号的Matlab 实现方法。
3.学习离散时间序列的基本运算:相加、相乘、移位等; 二、实验内容1. 练习把y=sin(x), z=cos(x),u=2sin(x),v=sin(x)/cos(x)在[0,2pi]区间内的4个子图分别用不同的颜色、点型和线型绘制在同一个窗口中,并加上纵坐标、标题、图例和网格线。
2. 利用MATLAB 编程产生和绘制下列有限长序列: (1)单位脉冲序列()n δ (2)单位阶跃序列()u n (3)矩形序列8()R n(4)正弦序列()sin()53x n n ππ=+(5)实指数序列0.9()n u n3.上机调试并打印或记录实验结果。
4.完成实验报告。
三、实验结果1. 实验程序如下:x=0:pi/10:2*pi;y=sin(x); plot(x,y,'r*:');grid on %绘制网格线 hold on z=cos(x); plot(x,z,'y+-'); hold on u=2*sin(x); plot(x,u,'bx-'); hold on v=sin(x)/cos(x); plot(x,v,'ko-');hold onxlabel('x 轴'); %x轴注释ylabel('y 轴'); %y轴注释legend({'y=sin(x)','z=cos(x)', 'u=2sin(x) ', 'v=sin(x)/cos(x) '}); %图形注解2. 程序如下:n=-20:20;n0=0;n1=8;w0=pi/5; w1=pi/3;x1=[(n-n0)==0];x2=[(n-n0)>=0];x3=[(n-n0)>=0& (n-n1)<=0];x4=sin(w0*n+w1);x5=0.9.^n.*x2;subplot(511);stem(n,x1);axis([ -20 20 0 2]);ylabel('\sigma(n)'); subplot(512);stem(n,x2);axis([ -20 20 0 2]);ylabel('u(n)');subplot(513);stem(n,x3);axis([ -20 20 0 2]);ylabel('R8(n)'); subplot(514);stem(n,x4);axis([ -20 20 -2 2]);ylabel(' sin(w0n+w1) '); subplot(515);stem(n,x5);axis([ -20 20 0 2]);ylabel('0.9nu(n)'); xlabel('n');实验二离散信号与系统一、实验目的1.掌握卷积定理、熟悉离散信号和系统的时域特性;2.学习Matlab进行卷积计算方法;3.学习Matlab求解差分方程二、实验内容1.离散信号的基本运算:对序列x(n)={2,3,4,1,2,5} ,n=0,1,2,3,4,5,的移位、乘法、加法、翻转及尺度变换。
数字信号处理实验报告_五个实验

实验一 信号、系统及系统响应一、 实验目的1、熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解;2、熟悉时域离散系统的时域特性;3、利用卷积方法观察分析系统的时域特性;4、掌握序列傅立叶变换的计算机实现方法,利用序列的傅立叶变换对连续信号、离散信号及系统响应进行频域分析。
二、 实验原理及方法采样是连续信号数字处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域特性发生变化以及信号信息不丢失的条件,而且可以加深对傅立叶变换、Z 变换和序列傅立叶变换之间关系式的理解。
对一个连续信号)(t x a 进行理想采样的过程可用下式表示:)()()(^t p t t x x aa其中)(^t x a 为)(t x a 的理想采样,p(t)为周期脉冲,即∑∞-∞=-=m nT t t p )()(δ)(^t x a的傅立叶变换为)]([1)(^s m a m j X T j a X Ω-Ω=Ω∑∞-∞= 上式表明^)(Ωj Xa为)(Ωj Xa的周期延拓。
其延拓周期为采样角频率(T /2π=Ω)。
只有满足采样定理时,才不会发生频率混叠失真。
在实验时可以用序列的傅立叶变换来计算^)(Ωj X a 。
公式如下:Tw jwae X j X Ω==Ω|)()(^离散信号和系统在时域均可用序列来表示。
为了在实验中观察分析各种序列的频域特性,通常对)(jw e X 在[0,2π]上进行M 点采样来观察分析。
对长度为N 的有限长序列x(n),有:n jw N n jw k ke m x eX--=∑=)()(1其中,k Mk πω2=,k=0,1,……M-1 时域离散线性非移变系统的输入/输出关系为∑∞-∞=-==m m n h m x n h n x n y )()()(*)()(上述卷积运算也可在频域实现)()()(ωωωj j j e H e X eY =三、 实验程序s=yesinput(Please Select The Step Of Experiment:\n 一.(1时域采样序列分析 s=str2num(s); close all;Xb=impseq(0,0,1); Ha=stepseq(1,1,10);Hb=impseq(0,0,3)+2.5*impseq(1,0,3)+2.2*impseq(2,0,3)+impseq(3,0,3); i=0;while(s);%时域采样序列分析 if(s==1)k=0;while(1)if(k==0)A=yesinput('please input the Amplitude:\n',...444.128,[100,1000]); a=yesinput('please input the Attenuation Coefficient:\n',...222.144,[100,600]);w=yesinput('please input the Angle Frequence(rad/s):\n',...222.144,[100,600]);endk=k+1;fs=yesinput('please input the sample frequence:\n',...1000,[100,1200]);Xa=FF(A,a,w,fs);i=i+1;string+['fs=',num2str(fs)];figure(i)DFT(Xa,50,string);1=yesinput1=str2num(1);end%系统和响应分析else if(s==2)kk=str2num(kk);while(kk)if(kk==1)m=conv(Xb,Hb);N=5;i=i+1;figure(i)string=('hb(n)');Hs=DFT(Hb,4,string);i=i+1;figure(i)string('xb(n)');DFT(Xb,2,string);string=('y(n)=xb(n)*hb(n)');else if (kk==2)m=conv(Ha,Ha);N=19;string=('y(n)=ha(n)*(ha(n)');else if (kk==3)Xc=stepseq(1,1,5);m=conv(Xc,Ha);string=('y(n)=xc(n)*ha(n)');endendendi=i+1;figure(i)DFT(m,N,string);kk=yesinputkk=str2num(kk);end卷积定理的验证else if(s==3)A=1;a=0.5;w=2,0734;fs=1;Xal=FF(A,a,w,fs);i=i+1;figure(i)string=('The xal(n)(A=1,a=0.4,T=1)'); [Xa,w]DFT(Xal,50,string);i=i+1;figure(i)string =('hb(n)');Hs=DFT(Hb,4,string);Ys=Xs.*Hs;y=conv(Xal,Hb);N=53;i=i+1;figure(i)string=('y(n)=xa(n)*hb(n)');[yy,w]=DFT(y,N,string);i=i+1;figure(i)subplot(2,2,1)plot(w/pi,abs(yy));axis([-2 2 0 2]);xlabel('w/pi');ylabel('|Ys(jw)|');title(FT[x(n)*h(n)]');subplot(2,2,3)plot(w/pi,abs(Ys));axis([-2 2 0 2]);xlabel('w/pi');ylabel('|Ys(jw)|');title('FT[xs(n)].FT[h(n)]'); end end end子函数:离散傅立叶变换及X(n),FT[x(n)]的绘图函数 function[c,l]=DFT(x,N,str) n=0:N-1; k=-200:200; w=(pi/100)*k; l=w; c=x*Xc=stepseq(1,1,5); 子函数:产生信号function c=FF(A,a,w,fs) n=o:50-1;c=A*exp((-a)*n/fs).*sin(w*n/fs).*stepseq(0,0,49); 子函数:产生脉冲信号function [x,n]=impseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)==0];子函数:产生矩形框信号function [x,n]=stepseq(n0,n1,n2) n=[n1:n2];x=[(n-n0>=0)];四、 实验内容及步骤1、认真复习采样理论,离散信号与系统,线性卷积,序列的傅立叶变换及性质等有关内容,阅读本实验原理与方法。
数字信号处理实验(1-7)原始实验内容文档(含代码)

实验要求1.每个实验进行之前须充分预习准备,实验完成后一周内提交实验报告;2.填写实验报告时,分为实验题目、实验目的、实验内容、实验结果、实验小结五项;3.实验报告要求:实验题目、实验目的、实验内容、实验结果四项都可打印;但每次实验的实验内容中的重要代码(或关键函数)后面要用手工解释其作用。
实验小结必须手写!(针对以前同学书写实验报告时候抄写代码太费时间的现象,本期实验报告进行以上改革)。
实验一信号、系统及系统响应实验目的:1. 掌握使用MATLAB进行函数、子程序、文件编辑等基本操作;2. 编写一些数字信号处理中常用序列的3. 掌握函数调用的方法。
实验内容:1.在数字信号处理的基本理论和MATLAB信号处理工具箱函数的基础上,可以自己编写一些子程序以便调用。
(1)单位抽样序列δ(n-n0)的生成函数impseq.m(2)单位阶跃序列u(n-n0)的生成函数stepseq.m(3)两个信号相加的生成函数sigadd.m(4)两个信号相乘的生成函数sigmult.m(5)序列移位y(n)=x(n-n0)的生成函数sigshift.m(6)序列翻褶y(n)=x(-n)生成函数sigfold.m(7)奇偶综合函数evenodd.m(8)求卷积和2.产生系列序列,并绘出离散图。
(1) x1(n)=3δ(n-2)-δ(n+4) -5≤n≤5(2) x3(n)=cos(0.04πn)+0.2w(n) 0≤n≤50其中:w(n)是均值为0,方差为1 的白噪声序列。
3.设线性移不变系统的抽样响应h(n)=(0.9)^n*u(n),输入序列x(n)=u(n)-u(n-10),求系统的输出y(n).实验二 系统响应及系统稳定性1.实验目的(1)掌握 求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)分析、观察及检验系统的稳定性。
2.实验原理与方法在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
数字信号处理实验文档

实验一:离散信号的MATLAB实现一、实验目的:1、掌握离散时间信号的一般表示方法。
2、熟悉连续信号经理想采样后的频谱变化关系,加深对时域采样定理的理解。
3、掌握离散信号序列的操作。
二、实验内容:M1-1 已知g1(t)=cos(6*pi*t), g1(t)=co 14*pi*t), g1(t)=cos(26*pi*t),以抽样频率fsam=10Hz对上述三个信号进行抽样。
在同一张图上画出g1(t),g2(t)和g3(t)及其抽样点,对所得结果进行讨论。
解:代码如下:100:100)*1/100;g1t=cos(6*pi*t);g2t=cos(14*pi*t);g3t=cos(26*pi*t);subplot(3,1,1);plot(g1t);subplot(3,1,2);plot(g2t);subplot(3,1,3);plot(g3t);绘出的图形如图1_1所示:图1_1采样频率为fsam=10Hz,采样时间为0.1s,而f1=3Hz,f2=7Hz,f3=13Hz,使得三个信号的采样图形相似,这样不能很好还原原来的信号图像。
所以对信号的采样频率应足够大,应满足fsam>=2fm.M1-2利用MATLAB的filter函数,求出下列系统的单位脉冲响应,并判断系统是否稳定。
讨论题所获得的结果。
代码1:k=1:300;x=zeros(1,300);x(1)=1;b1=[1];a1=[1,-1.845,0.850586];y1=filter(b1,a1,x);subplot(1,2,1);plot(k,y1);xlabel('k');ylabel('幅度y1');b2=[1];a2=[1,-1.85,0.85];y2=filter(b2,a2,x);subplot(1,2,2);plot(k,y2);xlabel('k');ylabel('幅度y2');图1_2_1代码2:x=zeros(1,500);x(1)=1;b1=[1];a1=[1,-1.845,0.850586];y1=filter(b1,a1,x);plot(k,y1);b2=[1];a2=[1,-1.85,0.85];y2=filter(b2,a2,x);plot(k,y1,k,y2,':');xlabel('k');ylabel('幅度');legend('y1''y2');图1_2_2结论:H1(z)的两个极点都在单位圆内,所以系统稳定,从图中可以看出响应曲线升高后有回落,系统最终趋向于0;H2(z)的一个极点在单位圆内,另一个在单位圆上,所以系统最终临界稳定,从图中可以看出响应曲线上升后没有回落,系统最终趋向于6.7左右。
数字信号处理实验指导书(带源程序)

实验一离散时间系统与MA TLAB一. 实验目的1. 进一步加深对离散时间系统的理解。
2. 学习在MATLAB中怎样表示离散时间信号。
3. 熟悉离散时间信号的作图。
二. 实验步骤1. 复习离散时间系统的有关容。
2. 复习MA TLAB的基本语法。
3. 按实验容熟悉stem。
4. 编写程序。
5. 输出结果,总结结论,按要求写出实验报告。
三. 实验容1.掌握stem函数STEM(Y) plots the data sequence Y as stems from the x axis terminated with circles for the data value.STEM(X,Y) plots the data sequence Y at the values specified in X.例:t=[0:0.1:2]; x=cos(pi*t+0.6); stem(t,x);xn=[4,2,2,3,6,7]; stem(xn);思考:STEM(Y)与STEM(X,Y)有什么不同?STEM与PLOT函数有什么不同?2.掌握subplot函数H = SUBPLOT(m,n,p), or SUBPLOT(mnp), breaks the Figure window into an m-by-n matrix of small axes, selects the p-th axes for the current plot, and returns the axis handle. The axes are counted along the top row of the Figure window, then the second row, etc.例:n1=0:3;x1=[1,1,1,1];subplot(221);stem(n1,x1);title('x1序列');n2=0:7;x2=[1,2,3,4,4,3,2,1];subplot(222);stem(n2,x2);title('x2序列');n3=0:7;x3=[4,3,2,1,1,2,3,4];subplot(223);stem(n3,x3);title('x3序列');n4=0:7;x41=cos((pi/4)*n4);subplot(224);stem(n4,x41);title('x4序列');思考:subplot是怎样分配各个作图分区的顺序号的?3.信号的运算]0,1.0,4.0,7.0,1[)(1=n x ,]9.0,7.0,5.0,3.0,1.0[)(2=n x ,请作出)()(21n x n x +,)()(21n x n x 的图形。
数字信号处理课程实验报告带代码实验结果

课程: 数字信号处理实验报告系专业班级姓名学号指导教师学年学期2018-2019-1年月日实验一报告开课实验室:通信实验室实验二报告开课实验室:通信实验室实验三报告开课实验室:通信实验室%频域采样理论验证程序exp2b.mM=27;N=32;n=0:M-1;%产生M长三角波序列x(n)xa=1:floor(M/2)+1; xb= ceil(M/2)-1:-1:1; xn=[xa,xb];Xk=fft(xn,1024); %1024点FFT[x(n)], 用于近似序列x(n)的FTX32k=fft(xn,32) ;%32点FFT[x(n)]x32n=ifft(X32k); %32点IFFT[X32(k)]得到x32(n)subplot(2,2,2);stem(n,xn,'.');box ontitle('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])k=0:1023;wk=2*k/1024; %subplot(2,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])k=0:N-1;subplot(2,2,3);stem(k,abs(X32k),'.');box ontitle('(e) 32点频域采样');xlabel('k');ylabel('|X_3_2(k)|');axis([0,16,0,200])n1=0:N-1;subplot(2,2,4);stem(n1,x32n,'.');box ontitle('(f) 32点IDFT[X_3_2(k)]');xlabel('n');ylabel('x_3_2(n)');axis([0,32,0,20])%频域采样理论验证程序exp2b.mM=27;N=16;n=0:M-1;%产生M长三角波序列x(n)xa=1:floor(M/2)+1; xb= ceil(M/2)-1:-1:1; xn=[xa,xb];Xk=fft(xn,1024); %1024点FFT[x(n)], 用于近似序列x(n)的FTX16k=fft(xn,16) ;%16点FFT[x(n)]x16n=ifft(X16k); %16点IFFT[X16(k)]得到x16(n)subplot(2,2,2);stem(n,xn,'.');box ontitle('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])k=0:1023;wk=2*k/1024; %subplot(2,2,1);plot(wk,abs(Xk));title('(a)FT[x(n)]');xlabel('\omega/\pi');ylabel('|X(e^j^\omega)|');axis([0,1,0,200])k=0:N-1;subplot(2,2,3);stem(k,abs(X16k),'.');box ontitle('(e) 16点频域采样');xlabel('k');ylabel('|X_1_6(k)|');axis([0,16,0,200])n1=0:N-1;subplot(2,2,4);stem(n1,x16n,'.');box ontitle('(f) 16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,16,0,20])实验一报告开课实验室:通信实验室。
数字信号处理课程设计(含完整代码)

课题一数字信号处理系统设计一、项目要求用本课程所学的数字信号处理理论知识,设计一个具有信号的采集、处理、传输、显示和存储等功能的系统,内容如下:1、录制一段语音信号,并对录制的语音信号进行采样(采样频率可取fs=22050Hz);2、画出采样后的语音信号的时域波形和频谱图;3、滤波器的性能指标:低通滤波器:通带边界频率fp=1kHz,通带最大衰减Ap=1dB;阻带边界频率fp=1.2kHz,阻带最小衰减Ap=100dB;高通滤波器:通带边界频率fp=5kHz,通带最大衰减Ap=1dB;阻带边界频率fp=4.8kHz,阻带最小衰减Ap=100dB;带通滤波器:通带上限截止频率fp2=3kHz, 通带下限截止频率fp1=1.2kHz;阻带上限截止频率fs2=3.2kHz, 通带下限截止频率fp1=1kHz;通带最大衰减Ap=1dB, 阻带最小衰减As=100dB;采用双线性变换法设计滤波器,并画出滤波器的频率响应;4、用自己设计的滤波器对采样的信号进行滤波,画出滤波后信号的时域波形和频谱图,并对滤波前后的信号进行对比,分析信号的变化;5、回放语音6、用GUI设计一个信号系统的用户界面。
二、实验所要用到的MATLAB函数1、语音信号的采样与播放wavread();[y,fs,bite]=wavread();%语音信号的采样sound(y,fs,bite);%播放语音2.滤波器:IIR:butte();%巴特沃思滤波器cheby1(); %切比雪夫I滤波器elliptical();%椭圆滤波器3.频率响应:[h,f]=freqz(b,a,n,fs)freqz(b,a,n,fs)5.快速傅里叶变换fft (x, n)6.画曲线plot(x, y)stem(x, y)7.在MATLAB中,设计辅助低通原型巴特沃思和切比雪夫滤波器的阶数和截止频率;1)利用buttord和cheblord确定阶数;2)[num,den]=butter(N,Wn),[num,den]=cheby1(N,Wn)3)lp2hp,lp2bp,lp2bs可以完成低通滤波器到高通,带通,带阻的转换4)使用biliner对模拟滤波器进行双线性变换,求得数字滤波器的传输函数系数三、数字滤波器(代码)1.IIR低通滤波器fp=1000;ft=5500;fs=1200;wp=2*pi*fp/ft;ws=2*pi*fs/ft;Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=buttord(Fp,Fs,1,100,'s');[z,p,k]=buttap(n);B=k*real(poly(z));A=real(poly(p));[b1,a1]=lp2lp(B,A,Omgc);[ba1,aa1]=bilinear(b1,a1,ft); %模拟转数字[Ha,w]=freqz(ba1,aa1); %求频率相应plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 低通滤波器');xlabel('频率/HZ');ylabel('幅值');2.IIR高通滤波器fp=5000;ft=25000;%取抽样频率•fs=4800;Rp=1;As=100;wp=2*pi*fp/ft;%通带频率ws=2*pi*fs/ft;%截止频率Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=ellipord(Fp,Fs,Rp,As,'s'); %计算阶数n和截止频率[z,p,k]=ellipap(n,Rp,As);B3=k*real(poly(z));A3=real(poly(p));[b3,a3]=lp2hp(B3,A3,Omgc);[ba3,aa3]=bilinear(b3,a3,ft);[Ha,w]=freqz(ba3,aa3);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR高通滤波器');xlabel('频率/HZ');ylabel('幅值');3.IIR带通滤波器fp1=1200;fp2=3000;fs1=1000;fs2=3200;ft=10000; As=100;Rp=1;wp1=2*pi*fp1/ft;wp2=2*pi*fp2/ft;ws1=2*pi*fs1/ft;ws2=2*pi*fs2/ft;Fp1=2*ft*tan(wp1/2);Fp2=2*ft*tan(wp2/2);Fp=[Fp1,Fp2];Fs1=2*ft*tan(ws1/2);Fs2=2*ft*tan(ws2/2);Fs=[Fs1,Fs2];bw=Fp2-Fp1;w0=sqrt(Fp1*Fp2);%通带宽和中心频率[n,Omgn]=cheb1ord(Fp,Fs,Rp,As,'s');[z,p,k]=cheb1ap(n,Rp);B2=k*real(poly(z));A2=real(poly(p));[b2,a2]=lp2bp(B2,A2,w0,bw);[ba2,aa2]=bilinear(b2,a2,ft);[Ha,w]=freqz(ba2,aa2);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 带通滤波器'); xlabel('频率/HZ'); ylabel('幅值');四、总代码function varargout = bzh(varargin)% BZH M-file for bzh.fig% BZH, by itself, creates a new BZH or raises the existing% singleton*.%% H = BZH returns the handle to a new BZH or the handle to% the existing singleton*.%% BZH('CALLBACK',hObject,eventData,handles,...) calls the local% function named CALLBACK in BZH.M with the given input arguments.%% BZH('Property','Value',...) creates a new BZH or raises the % existing singleton*. Starting from the left, property value pairs are% applied to the GUI before ko_OpeningFunction gets called. An % unrecognized property name or invalid value makes property application% stop. All inputs are passed to bzh_OpeningFcn via varargin. %% *See GUI Options on GUIDE's Tools menu. Choose "GUI allowsonly one% instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002-2003 The MathWorks, Inc.% Edit the above text to modify the response to help bzh% Last Modified by GUIDE v2.5 09-Jan-2014 08:54:22% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @bzh_OpeningFcn, ...'gui_OutputFcn', @bzh_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before bzh is made visible.function bzh_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% varargin command line arguments to bzh (see VARARGIN)% Choose default command line output for bzhhandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes bzh wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line. function varargout = bzh_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in tag_start.function tag_start_Callback(hObject, eventdata, handles)% hObject handle to tag_start (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1)cla;global z0;global yy;fs=22050;nbits=32;[yy,fs,nbits]=wavread('D:\f.wav'); %语音信号加载sound(yy,fs); %回放语音z0=yy;axes(handles.axes1);plot(yy);title('时域采样信号波形');grid onn=length(yy); %求出语音信号的长度Y=fft(yy,n); %傅里叶变换axes(handles.axes2);plot(20*log10(abs(Y)));title('时域采样信号频谱');guidata(hObject,handles);grid on% --- Executes on button press in tag_ditong.function tag_ditong_Callback(hObject, eventdata, handles)% hObject handle to tag_ditong (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes1)cla;global z1;global yy;global ba1;global aa1;global Fp;global Fs;fp=1000;ft=5500;fs=1200;wp=2*pi*fp/ft;ws=2*pi*fs/ft;Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=buttord(Fp,Fs,1,100,'s');[z,p,k]=buttap(n);B=k*real(poly(z));A=real(poly(p));[b1,a1]=lp2lp(B,A,Omgc);[ba1,aa1]=bilinear(b1,a1,ft); %模拟转数字z1=filter(ba1,aa1,yy);[Ha,w]=freqz(ba1,aa1); %求频率相应plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 低通滤波器');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_gaotong.function tag_gaotong_Callback(hObject, eventdata, handles)% hObject handle to tag_gaotong (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes2)cla;global yy;global z2;global B3;global ba3;global aa3;global Fp;global Fs;fp=5000;ft=25000;%取抽样频率•fs=4800;Rp=1;As=100;wp=2*pi*fp/ft;%通带频率ws=2*pi*fs/ft;%截止频率Fp=2*ft*tan(wp/2);Fs=2*ft*tan(ws/2);[n,Omgc]=ellipord(Fp,Fs,Rp,As,'s'); %计算阶数n和截止频率[z,p,k]=ellipap(n,Rp,As);B3=k*real(poly(z));A3=real(poly(p));[b3,a3]=lp2hp(B3,A3,Omgc);[ba3,aa3]=bilinear(b3,a3,ft);z2=filter(ba3,aa3,yy);[Ha,w]=freqz(ba3,aa3);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR高通滤波器');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_daitong.function tag_daitong_Callback(hObject, eventdata, handles)% hObject handle to tag_daitong (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z3;global B2;global ba2;global aa2;fp1=1200;fp2=3000;fs1=1000;fs2=3200;ft=10000;As=100;Rp=1;wp1=2*pi*fp1/ft;wp2=2*pi*fp2/ft;ws1=2*pi*fs1/ft;ws2=2*pi*fs2/ft;Fp1=2*ft*tan(wp1/2);Fp2=2*ft*tan(wp2/2);Fp=[Fp1,Fp2];Fs1=2*ft*tan(ws1/2);Fs2=2*ft*tan(ws2/2);Fs=[Fs1,Fs2];bw=Fp2-Fp1;w0=sqrt(Fp1*Fp2);%通带宽和中心频率[n,Omgn]=cheb1ord(Fp,Fs,Rp,As,'s');[z,p,k]=cheb1ap(n,Rp);B2=k*real(poly(z));A2=real(poly(p));[b2,a2]=lp2bp(B2,A2,w0,bw);[ba2,aa2]=bilinear(b2,a2,ft);z3=filter(ba2,aa2,yy);[Ha,w]=freqz(ba2,aa2);plot(w*ft/(2*pi),20*log10(abs(Ha)));title('IIR 带通滤波器');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_dibo.function tag_dibo_Callback(hObject, eventdata, handles)% hObject handle to tag_dibo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z1;global ba1;global aa1;m4=fft(z1);plot(z1,'y');title('IIR滤波后的信号波形');xlabel('时间/t');ylabel('幅值');axes(handles.axes4)cla;plot(abs(m4),'y');title('IIR滤波后信号频谱');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_gaobo.function tag_gaobo_Callback(hObject, eventdata, handles)% hObject handle to tag_gaobo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z2;global B3;global ba3;global aa3;m5=fft(z2);plot(z2,'y');title('IIR滤波后的信号波形');xlabel('时间/t');ylabel('幅值');axes(handles.axes4)cla;plot(abs(m5),'y');title('IIR滤波后信号频谱');xlabel('频率/HZ');ylabel('幅值');% --- Executes on button press in tag_daibo.function tag_daibo_Callback(hObject, eventdata, handles)% hObject handle to tag_daibo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) axes(handles.axes3)cla;global yy;global z3;global B2;global ba2;global aa2;m6=fft(z3);plot(z3,'y');title('IIR滤波后的信号波形');xlabel('时间/t');ylabel('幅值');axes(handles.axes4)cla;plot(abs(m6),'y');title('IIR滤波后信号频谱');xlabel('频率/HZ');ylabel('幅值');% --- Executes on selection change in tag_choose.function tag_choose_Callback(hObject, eventdata, handles)% hObject handle to tag_choose (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% Hints: contents = get(hObject,'String') returns tag_choose contents as cell array% contents{get(hObject,'Value')} returns selected item from tag_choose% --- Executes during object creation, after setting all properties. function tag_choose_CreateFcn(hObject, eventdata, handles)% hObject handle to tag_choose (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER.if ispcset(hObject,'BackgroundColor','white');elseset(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundCo lor'));end% --- Executes on button press in tag_return.function tag_return_Callback(hObject, eventdata, handles)% hObject handle to tag_return (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global z0;global z1;global z2;global z3;global yy;val=get(handles.tag_choose,'Value');if(val==1)[yy,fs,nbits]=wavread('D:\f.wav'); %语音信号加载sound(yy,fs); %回放语音endif(val==2)sound(z1,22050);endif(val==3)sound(z3,22050);endif(val==4)sound(z2,22050);end% --- Executes on mouse press over axes background.function axes1_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to axes1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)% --- If Enable == 'on', executes on mouse press in 5 pixel border. % --- Otherwise, executes on mouse press in 5 pixel border or over tag_start.function tag_start_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to tag_start (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)采样后信号滤波器数字波形IIR低通滤波后波形图IIR高通滤波后波形图IIR带通滤波后波形图。
数字信号处理--实验五

实验五FIR数字滤波器的设计04011344 王晨一、实验目的(1) 掌握用窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的MATLAB编程。
(2) 熟悉线性相位FIR滤波器的幅频特性和相频特性。
(3) 了解各种不同窗函数对滤波器性能的影响。
二、实验原理①线性相位实系数FIR滤波器按其N值奇偶和h(n)的奇偶对称性分为四种:1、h(n)为偶对称,N为奇数;H(ejω)的幅值关于ω=0,π,2π成偶对称。
2、h(n)为偶对称,N为偶数;H(ejω)的幅值关于ω=π成奇对称,不适合作高通。
3、h(n)为奇对称,N为奇数;H(ejω)的幅值关于ω=0,π,2π成奇对称,不适合作高通和低通。
4、h(n)为奇对称,N为偶数;H(ejω) ω=0、2π=0,不适合作低通。
② 窗口法窗函数法设计线性相位FIR 滤波器步骤:➢ 确定数字滤波器的性能要求:临界频率k {}ω,滤波器单位脉冲响应长度N ; ➢ 根据性能要求,合理选择单位脉冲响应(n)h 的奇偶对称性,从而确定理想频率响应j (e )d H ω的幅频特性和相频特性;➢ 求理想单位脉冲响应(n)d h ,在实际计算中,可对j (e )d H ω按M(M 远大于N)点等距离采样,并对其求IDFT 得(n)M h ,用(n)M h 代替(n)d h ;➢ 选择适当的窗函数(n)ω,根据d (n)h (n)(n)h ω=求所需设计的FIR 滤波器单位脉冲响应;➢ 求j (e )H ω,分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N ,重复上述设计过程,以得到满意的结果。
窗函数的傅式变换j (e )W ω的主瓣决定了j (e )H ω过渡带宽。
j (e )W ω的旁瓣大小和多少决定了j (e )H ω在通带和阻带范围内波动幅度,常用的几种窗函数有:(1) 矩形窗(Rectangle Window) N (n)R (n)ω=(2) 汉宁(Hanning)窗,又称升余弦窗(3) 汉明(Hamming)窗,又称改进的升余弦窗(4) 布莱克曼(Blankman)窗,又称二阶升余弦窗(5) 凯塞(Kaiser)窗其中:β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。
数字信号处理实验指导书(学生版)

“数字信号处理”实验指导书(一)一、实验课程编码:105003 二、实验课程名称:数字信号处理三、实验项目名称: 应用MATLAB 分析离散信号频谱 四、实验目的掌握应用MATLAB 分析离散信号频谱的方法,即熟悉应用MATLAB 分析离散信号的函数。
五、主要设备安装有MATLAB 软件的电脑 六、实验内容编写MATLAB 程序,实现下面题目:1. 用快速卷积法计算下面两个序列的线性卷积。
)()4.0(s )(15n R n in n x =,)(9.0)(20n R n h n =2.已知序列[]()cos 0120n n N Nx n π⎧≤≤-⎪=⎨⎪⎩其它(1)计算该序列DTFT 的表达式()j X e ω,并画出N=10时的()j X e ω曲线; (2)编写MATLAB 程序,利用FFT 函数,计算N =10时,序列x [k ]的DTFT 在2m mNπω=的抽样值。
利用hold 函数,将抽样点画在()j X e ω的曲线上。
3.理解高密度频谱和高分辨率频谱的概念。
设)52.0cos()48.0(co )(n n s n x ππ+=(1) 取0≤n ≤9,求)(1k X(2) 将(1)中的)(x n 补零加长到0≤n ≤99,求)(2k X (3) 增加取样值的个数,取0≤n ≤99,求)(3k X4. 用DFT 对连续信号做谱分析。
设)50cos()100sin()200cos()(t t t t x a πππ++=,用DFT 分析)(t x a 的频谱结构,选择不同的截取长度Tp ,观察截断效应,试用加窗的方法减少谱间干扰。
选取的参数:(1) 频率s s f T Hz f /1 ,400==(2) 采样信号序列)()()(n w nT x n x a =,)(n w 是窗函数。
选取两种窗函数:矩形窗函数)()(n R n w N =和Hamming 窗,后者在程序中调用函数Hamming 产生宽度为N 的Hamming 窗函数向量。
数字信号处理Matlab课后实验(吴镇扬)

数字信号处理实验报告实验一熟悉MATLAB环境实验二信号的采样与重建实验三快速变换及其应用实验四 IIR数字滤波器的设计实验五 FIR数字滤波器的设计实验一熟悉MATLAB环境一、实验目的(1)熟悉MATLAB的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB编程并学会创建函数。
(5)观察离散系统的频率响应。
二、实验内容认真阅读本章附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。
在熟悉了MATLAB基本命令的基础上,完成以下实验。
上机实验内容:(1)数组的加、减、乘、除和乘方运算。
输入A=[1 2 3 4],B=[3 4 5 6],求C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B并用stem语句画出A、B、C、D、E、F、G。
实验程序:A=[1 2 3 4];B=[3 4 5 6];n=1:4;C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B;subplot(4,2,1);stem(n,A,'fill');xlabel ('时间序列n');ylabel('A');subplot(4,2,2);stem(n,B,'fill');xlabel ('时间序列n ');ylabel('B');subplot(4,2,3);stem(n,C,'fill');xlabel ('时间序列n ');ylabel('A+B');subplot(4,2,4);stem(n,D,'fill');xlabel ('时间序列n ');ylabel('A-B');subplot(4,2,5);stem(n,E,'fill');xlabel ('时间序列n ');ylabel('A.*B');subplot(4,2,6);stem(n,F,'fill');xlabel ('时间序列n ');ylabel('A./B');subplot(4,2,7);stem(n,G,'fill');xlabel ('时间序列n ');ylabel('A.^B');运行结果:(2)用MATLAB实现以下序列。
数字信号处理实验代码-实验一二三

%实验一第一题A=[1 2 3 4 ];B=[3 4 5 6 ];C=A+B;D=A-B;E=A.*B;F=A./B;G=A.^B;%a.^b,是a中每个元素b次方,形成的新矩阵subplot(2,4,1)%两行四列第一个stem(A);title('A');%标题subplot(2,4,2)stem(B);title('B');subplot(2,4,3)stem(C);title('C');subplot(2,4,4)stem(D);title('D');subplot(2,4,5)stem(E);title('E');subplot(2,4,6)stem(F);title('F');subplot(2,4,7)stem(G);title('G');%实验一第二题n=0:1:15;x1=0.8.^n;%求n次方x2=exp((0.2+3j)*n);%虚数jx3=3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi* n+0.1*pi);N=0:1:63;x4=3*cos(0.125*pi*rem(N,16)+0.2*pi)+2*sin (0.25*pi*rem(N,16)+0.1*pi);%以16为周期进行延拓N2=0:1:39;x5=3*cos(0.125*pi*rem(N2,10)+0.2*pi)+2*si n(0.25*pi*rem(N2,10)+0.1*pi);%以10为周期进行延拓figure(1) ;stem(n,x3);title('x(n)');%标题figure(2) ;subplot(2,1,1);stem(N,x4);title('x(n)以16为周期进行周期延拓'); subplot(2,1,2);stem(N2,x5);title('x(n)以10为周期进行周期延拓');第三题n=0:1:3;x=[1 -1 3 5 ];%circshift矩阵循环平移,[a,b],a是列向移动,b 是行向移动x1=2*circshift(x,[0 -2]);x2=x1-circshift(x,[0 1]);X1=x2+2*x;y1=circshift(x,[0 1]);y2=circshift(x,[0 2]);y3=circshift(x,[0 3]);y4=circshift(x,[0 4]);y5=circshift(x,[0 5]);X2=1*y1+2*y2+3*y3+4*y4+5*y5;subplot(2,1,1);stem(n,X1);title('x1(n)=2*x(n+2)-x(n-1)-2*x( n)');xlabel('n');ylabel('x1(n)');subplot(2,1,2);stem(n,X2);title('x2(n)=1*x(n-1)+2*x(n-2)+3 *x(n-3)+4*x(n-4)+5*x(n-5)');xlabel('n');ylabel('x2(n)');第四题function stepshift(n0,n1,n2)n1=input('请输入起点:');n2=input('请输入终点:');n=n1:n2;n0=input('请输入原点:');y=[(n-n0)>=0];%当逻辑值(n-n0)>=0为真的时候,y=1stem(n,y);xlabel('序列值n');ylabel('函数值');title('函数stepshift(n0,n1,n2)');第五题B=[1 sqrt(2) 1];A=[1 -0.67 0.9];[H,w]=freqz(B,A);%离散系统频率响应的函数fregz()fp=20*log(abs(H));%幅频响应xp=angle(H);%相频响应subplot(2,1,1);plot(w,fp);title('幅频响应');xlabel('时间/t');ylabel('幅频响应/dB'); subplot(2,1,2);plot(w,fp);title('相频响应');xlabel('时间/t');ylabel('相频响应');第六题h=[8 -2 -1 2 3 ];x=[2 3 -1 -3 ];n=0:7;y=conv(h,x);%h和x的卷积,结果放在y里stem(n,y);title('[8 -2 -1 2 3 ]与[2 3 -1 -3 ]的离散卷积');第七题n=0:1:30;u=[n>=0];A=[1 0.1 -0.06];B=[1 -2];h=impz(B,A,n);subplot(2,1,1);stem(n,h);title('单位脉冲响应');subplot(2,1,2);y=zplane(B,A);title('零极点图');实验二第一题f1=50;f2=500;f3=1000;f=8000;n=0:299;y=sin(f1/f*2*pi*n)+sin(f2/f*2*pi*n)+sin(f3/f* 2*pi*n);stem(n,y);title('抽样信号');xlabel('n');ylabel('幅值');[h,w]=freqz(y);figure(2);plot(w(1:299),abs(h(1:299)));title('幅频响应');xlabel('角度');ylabel('幅度');第二题f1=50;f2=500;f3=1000;f=800;n=0:99;y=sin(f1/f*2*pi*n)+sin(f2/f*2*pi*n)+sin(f3/f* 2*pi*n);stem(n,y);title('抽样信号');xlabel('n');ylabel('幅值');[h,w]=freqz(y);figure(2);plot(w(1:499),abs(h(1:499)));title('幅频响应');xlabel('角度');ylabel('幅度');第三题一f=1;fs=16;N=52;n=0:N-1;x=cos(2*pi*(f/fs)*n);subplot(1,2,1);stem(n,x(1:N));title('原信号');xlabel('n');ylabel('幅度');[h,w]=freqz(x);subplot(1,2,2);plot(w(1:499),abs(h(1:499)));title('原信号幅频响应');xlabel('角度');ylabel('幅度');M=4;y=decimate(x,M);%抽取m=0:N/M-1;figure(2);subplot(1,2,1);stem(m,y(1:N/M));title('抽取信号');xlabel('n');ylabel('幅度');[h1,w1]=freqz(y);subplot(1,2,2);plot(w1(1:499),abs(h1(1:499)));title('抽取信号幅频响应');xlabel('角度');ylabel('幅度');第三题二f=1;fs=16;N=52;n=0:N-1;x=cos(2*pi*(f/fs)*n);subplot(1,2,1);stem(n,x(1:N));title('原信号');xlabel('n');ylabel('幅度');[h,w]=freqz(x);subplot(1,2,2);plot(w(1:499),abs(h(1:499))); title('原信号幅频响应');xlabel('角度');ylabel('幅度');L=3;y=interp(x,L);%插值l=0:N*L-1;figure(2);subplot(1,2,1);stem(l,y(1:N*L));title('插值信号');xlabel('n');ylabel('幅度');[h1,w1]=freqz(y);subplot(1,2,2);plot(w1(1:499),abs(h1(1:499))); title('插值信号幅频响应'); xlabel('角度');ylabel('幅度');第四题f1=0.04;f2=0.3;N=50;M=3;L=5;n=0:N-1;x=sin(f1*2*pi*n)+sin(f2*2*pi*n); subplot(1,2,1);stem(n,x(1:N));title('输入信号');xlabel('n');ylabel('幅度');y=resample(x,L,M);subplot(1,2,2);[h,w]=freqz(x);plot(w(1:499),abs(h(1:499))); title('输入信号幅频响应'); xlabel('角度');ylabel('幅度');figure(2);subplot(1,2,1);stem(n,y(1:N)); title('输出信号');xlabel('n');ylabel('幅度');subplot(1,2,2);[h,w]=freqz(y);plot(w(1:499),abs(h(1:499)));title('输出信号幅频响应');xlabel('角度');ylabel('幅度');第五题[y,fs]=audioread('1.wav');fs1=48000;fs2=32000;fs3=22050;fs4=1600 0;fs5=8000;audiowrite('2.wav',y,fs1);y1=resample(y,12,11);plot(y1);title('采样频率为48kHz时的时频图'); audiowrite('3.wav',y,fs2);y2=resample(y,8,11);figure(2);plot(y2);title('采样频率为32kHz时的时频图'); audiowrite('4.wav',y,fs3);y3=resample(y,1,2);figure(3);plot(y3);title('采样频率为22.05kHz时的时频图'); audiowrite('5.wav',y,fs4);y4=resample(y,4,11);figure(4);plot(y4);title('采样频率为16kHz时的时频图'); audiowrite('6.wav',y,fs5);y5=resample(y,2,11);figure(5);plot(y5);title('采样频率为8kHz时的时频图');第六题fs1=44100;[x,fs]=audioread('21.wav');subplot(2,1,1);plot(x);title('采样频率为11kHz时的时频图'); audiowrite('22.wav',x,fs1);y=resample(x,4,1);subplot(2,1,2);plot(y);title('采样频率为44.1kHz时的时频图');实验三第一题一%观察高斯序列的时域和幅频特性%固定参数p=8,分别使q=2、4、8n=0:1:15;p=8;q=2;x=exp(-(n-p).^2/q);%高斯序列y=fft(x);subplot(3,2,1);plot(x);title('p=8,q=2');xlabel('n');ylabel('时域特性'); subplot(3,2,2);plot(abs(y));title('p=8,q=2');xlabel('n');ylabel('幅频特性'); p=8;q=4;x=exp(-(n-p).^2/q);%高斯序列y=fft(x);subplot(3,2,3);plot(x);title('p=8,q=4');xlabel('n');ylabel('时域特性'); subplot(3,2,4);plot(abs(y));title('p=8,q=4');xlabel('n');ylabel('幅频特性'); p=8;q=8;x=exp(-(n-p).^2/q);%高斯序列y=fft(x);subplot(3,2,5);plot(x);title('p=8,q=8');xlabel('n');ylabel('时域特性'); subplot(3,2,6);plot(abs(y));title('p=8,q=8');xlabel('n');ylabel('幅频特性');第一题二%观察高斯序列的时域和幅频特性%固定参数q=8,分别使p=8、13、14n=0:1:15;p=8;q=8;x=exp(-(n-p).^2/q);%高斯序列y=fft(x);subplot(3,2,1);plot(x);title('p=8,q=8');xlabel('n');ylabel('时域特性'); subplot(3,2,2);plot(abs(y));title('p=8,q=8');xlabel('n');ylabel('幅频特性'); p=13;q=8; x=exp(-(n-p).^2/q);%高斯序列y=fft(x);subplot(3,2,3);plot(x);title('p=13;q=8');xlabel('n');ylabel('时域特性');subplot(3,2,4);plot(abs(y));title('p=13;q=8');xlabel('n');ylabel('幅频特性');p=14;q=8;x=exp(-(n-p).^2/q);%高斯序列y=fft(x);subplot(3,2,5);plot(x);title('p=14,q=8');xlabel('n');ylabel('时域特性');subplot(3,2,6);plot(abs(y));title('p=14,q=8');xlabel('n');ylabel('幅频特性');第二题%观察衰减正弦序列的时域和幅频特性a=0.1,f=0.0625%改变f=0.4375、0.5625n=0:1:15;a=0.1;f=0.0625;x=exp(-a*n).*sin(2*pi*f*n);%衰减正弦序列y=fft(x);subplot(3,2,1);plot(x);title('a=0.1,f=0.0625');xlabel('n');ylabel('时域特性');subplot(3,2,2);plot(abs(y));title('a=0.1,f=0.0625');xlabel('n');ylabel('幅频特性');a=0.1;f=0.4375;x=exp(-a*n).*sin(2*pi*f*n);%衰减正弦序列y=fft(x);subplot(3,2,3);plot(x);title('a=0.1,f=0.4375');xlabel('n');ylabel('时域特性');subplot(3,2,4);plot(abs(y));title('a=0.1,f=0.4375');xlabel('n');ylabel('幅频特性');a=0.1;f=0.5625;x=exp(-a*n).*sin(2*pi*f*n);%衰减正弦序列y=fft(x);subplot(3,2,5);plot(x);title('a=0.1,f=0.5625');xlabel('n');ylabel('时域特性');subplot(3,2,6);plot(abs(y));title('a=0.1,f=0.5625');xlabel('n');ylabel('幅频特性');第三题N=8;n=0:1:7;xc=zeros(size(n));xd=zeros(size(n));x=(n>=0)&(n<=3);xc(x)=n(x);xd(x)=4-n(x); x=(n>=4)&(n<=7);xc(x)=8-n(x);xd(x)=n(x)-4;y1=fft(xc,N);y2=fft(xd,N);subplot(2,2,1);stem(n,xc,'-');title('三角波');xlabel('n');ylabel('时域特性'); subplot(2,2,2);stem(n,abs(y1),'-');title('三角波');xlabel('n');ylabel('幅频特性'); subplot(2,2,3);stem(n,xd,'*');title('反三角波');xlabel('n');ylabel('时域特性');subplot(2,2,4);stem(n,abs(y2),'*');title('反三角波');xlabel('n');ylabel('幅频特性');N=32;n=0:1:31;xc=zeros(size(n));xd=zeros(size(n));x=(n>=0)&(n<=3);xc(x)=n(x);xd(x)=4-n(x); x=(n>=4)&(n<=7);xc(x)=8-n(x);xd(x)=n(x)-4;x=(n>=8)&(n<=31);xc(x)=0;xd(x)=0;y1=fft(xc,N);y2=fft(xd,N);figure(2);subplot(2,2,1);stem(n,xc,'-');title('三角波');xlabel('n');ylabel('时域特性'); subplot(2,2,2);stem(n,abs(y1),'-');title('三角波');xlabel('n');ylabel('幅频特性'); subplot(2,2,3);stem(n,xd,'*');title('反三角波');xlabel('n');ylabel('时域特性');subplot(2,2,4);stem(n,abs(y2),'*');title('反三角波');xlabel('n');ylabel('幅频特性'); 第四题N=16;f1=1/16;f2=1/64;n=0:1:N-1;x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n );x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)* n);y1=fft(x1,N);y2=fft(x2,N);subplot(2,2,1);stem(n,x1,'-');title('N=16,f=1/16');xlabel('n');ylabel('时域特性');subplot(2,2,2);stem(n,abs(y1),'-');title('N=16,f=1/16');xlabel('n');ylabel('幅频特性');subplot(2,2,3);stem(n,x2,'*');title('N=16,f=1/64');xlabel('n');ylabel('时域特性');subplot(2,2,4);stem(n,abs(y2),'*');title('N=16,f=1/64');xlabel('n');ylabel('幅频特性');N=128;f1=1/16;f2=1/64;n=0:1:N-1;x1=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f1)*n );x2=sin(2*pi*0.125*n)+cos(2*pi*(0.125+f2)* n);y1=fft(x1,N);y2=fft(x2,N);figure(2);subplot(2,2,1);stem(n,x1,'-');title('N=128,f=1/16');xlabel('n');ylabel('时域特性');subplot(2,2,2);stem(n,abs(y1),'-');title('N=128,f=1/16');xlabel('n');ylabel('幅频特性');subplot(2,2,3);stem(n,x2,'*');title('N=128,f=1/64');xlabel('n');ylabel('时域特性');subplot(2,2,4);stem(n,abs(y2),'*');title('N=128,f=1/64');xlabel('n');ylabel('幅频特性');第五题n1=0:1:15;n2=0:1:30;p=8;q=2;x1=exp(-(n1-p).^2/q);%高斯序列a=0.1;f=0.0625;x2=exp(-a*n1).*sin(2*pi*f*n1);f1=fft(x1);f2=fft(x2);y1=f1.*f2;%圆周卷积y2=conv(x1,x2);%线性卷积subplot(2,2,1);stem(n1,x1,'-');title('高斯序列');xlabel('n');ylabel('时域特性');subplot(2,2,2);stem(n1,x2,'-');title('衰减正弦序列');xlabel('n');ylabel('时域特性');subplot(2,2,3);stem(n1,real(y1),'*');title('16点的循环卷积');xlabel('n');ylabel('幅频特性');subplot(2,2,4);stem(n2,real(y2),'*');title('线性卷积');xlabel('n');ylabel('幅频特性');第六题第七题n1=0:1:15;n2=0:1:30;p=8;q=2;xa=exp(-(n1-p).^2/q);%高斯序列a=0.1;f=0.0625;xb=exp(-a*n1).*sin(2*pi*f*n1);%衰减正弦f1=fft(xa);f2=fft(xb); ya1=f1.*f1;%xa(n)的圆周卷积ya2=conv(xa,xa);%线性卷积yb1=f2.*f2;%xb(n)的圆周卷积yb2=conv(xb,xb);%线性卷积subplot(2,2,1);stem(n1,real(ya1),'-'); title('xa(n)的循环相关');xlabel('n');ylabel('幅频特性'); subplot(2,2,2);stem(n2,real(ya2),'-'); title('xa(n)的线性相关');xlabel('n');ylabel('幅频特性'); subplot(2,2,3);stem(n1,real(yb1),'*'); title('xb(n)的循环相关');xlabel('n');ylabel('幅频特性'); subplot(2,2,4);stem(n2,real(yb2),'*'); title('xb(n)的线性相关');xlabel('n');ylabel('幅频特性');第八题N=16;n=0:1:N-1;p=8;q=2;x1=exp(-(n-p).^2/q);%高斯序列xk1=fft(x1,2*N);rm1=real(ifft(conj(xk1).*xk1));%自相关rm1=[rm1(N+2:2*N) rm1(1:N)];m1=(-N+1):(N-1);stem(m1,rm1);title('xa(n)的自相关函数');xlabel('m');ylabel('幅度');a=0.1;f=0.0625;x2=exp(-a*n).*sin(2*pi*f*n);%衰减正弦序列figure(2);xk2=fft(x2,2*N);rm2=real(ifft(conj(xk2).*xk2));%自相关rm2=[rm2(N+2:2*N) rm2(1:N)];%对称m2=(-N+1):(N-1);%坐标轴stem(m2,rm2);title('xb(n)的自相关函数');xlabel('m');ylabel('幅度');。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一 离散时间信号的时域分析1. 在MATLAB 中利用逻辑关系式0==n 来实现()0n n -δ序列,显示围21n n n ≤≤。
(产生如下图所示的单位脉冲信号的函数为impseq(n0,n1,n2),程序如示例所示)并利用impseq 函数实现序列:()()()632-+-=n n n y δδ;103≤≤-n()n x n 10n 2n 1n源代码:impseq.mfunction y=impseq(n0,n1,n2)n=[n1:n2]y=[(n-n0)==0]exp01-1.mfunction impseq(n0,n1,n2)n=-3:1:10y=2*impseq(3,-3,10)+impseq(6,-3,10);stem(n,y)2. 在MATLAB 中利用逻辑关系式0>=n 来实现()0n n u -序列,显示围21n n n ≤≤。
(自己编写产生单位阶跃信号的函数,函数命名为stepseq(n0,n1,n2))并利用编写的stepseq 函数实现序列:()()()10522≤≤--++=n n u n u n y源代码:stepseq.mfunction y=stepseq(n0,n1,n2)n=n1:1:n2y=[(n-n0)>=0]exp01-2.mfunction stepseq(n0,n1,n2)n=-5:1:20y=stepseq(-2,-5,20)+stepseq(2,-5,20)stem(n,y)3. 在MATLAB 中利用数组运算符“.^”来实现一个实指数序列。
如:()()1503.0≤≤=n n x n源代码:n=0:1:15;x=0.3.^nstem(n,x)4. 在MATLAB 中调用函数sin 或cos 产生正余弦序列,如:()()200π3.0cos 55ππ4.0sin 3≤≤+⎪⎭⎫ ⎝⎛+=n n n n x源代码:n=0:1:20x=11*sin(0.3*pi*n+pi/5)+5*cos(0.3*pi*n)stem(n,x)思考题:1.在MATLAB 环境下产生单位脉冲序列和单位阶跃序列各有几种方法?如何使用?2.在MATLAB 环境下进行序列的相乘运算时应注意什么问题?实验二 离散时间系统的时域分析1. 在MATLAB 中利用部函数conv 来计算两个有限长序列的卷积。
给出两个序列,试求其卷积结果。
()[]()[]()()()n h n x n y n n h n n x *=≤≤-=≤≤--=519,14,11,20,5,7,18138,6,3,9,5 源代码:x=[5,9,3,6,-8];h=[18,7,5,20,11,14,9];n=[-4:6]y=conv(x,h)stem(n,y)运行结果:n =-4 -3 -2 -1 0 1 2 3 4 5 6y =90 197 142 274 148 203 284 29 23 -58 -722. 在MATLAB 中利用filter 函数在给定输入和差分方程时求差分方程的解。
给出如下差分方程:()()()()n x n y n y n y =-+--25.019.0(1)计算并画出冲击响应()1010,≤≤-n n h(2)由此()n h 确定系统是否稳定。
(稳定)源代码:b=[1];a=[1,-0.9,0.5];n=-10:50;x=[zeros(1,10),1,zeros(1,10)];y=filter(b,a,x);n=[-10:10]stem(n,y)3. 已知系统单位脉冲响应为()()()1902.0sin 5.0cos ≤≤+=n n n n h ,如果输入为()()902.0ex p ≤≤=n n n x ,求利用conv 函数求系统输出()n y 。
源代码:n=[0:19]h=cos(0.5*n)+sin(0.2*n)m=[0:9]x=exp(0.2*m)y=conv(x,h)stem(y)思考题:1. 离散线性时不变系统中的差分方程和系统函数有何联系?公式中的系数在编写程序时须注意什么问题?系统函数H(Z)=Y(Z)/X(Z),对差分方程进行Z 变换,由公式得系统函数。
由差分方程进行z 变换可以求得系统函数。
公式中的系数应从低阶向高阶写,没有的项补零。
公式中的系数在编写程序时须注意:y(n)的系数必须为1,注意不要落下潜在的0系数。
2. MATLAB 中提供的conv 卷积子函数使用中须满足什么条件?如果条件不满足应如何处理? conv 中卷积的子函数n 值是从零开始的,如果不满足此条件,需从新定义卷积结果的n 值围。
实验三 离散时间系统的频域分析1. 已知离散时间系统函数为()432143213.07.05.11.112.01.03.01.02.0--------+-+-++++=z z z z z z z z z H 求该系统的零极点(提示:可以用roots 实现);画出零极点分布图(提示:可以用zplane 实现);判断系统的因果、稳定性。
源代码:b=[0.2 0.1 0.3 0.1 0.2];a=[1 -1.1 1.5 -0.7 0.3];z=roots(b);p=roots(a);zplane(b,a)disp(z)disp(p)disp(abs(z))disp(abs(p))2. 已知离散时间系统的系统函数为()432143213.07.05.11.112.01.03.01.02.0--------+-+-++++=zz z z z z z z z H 求该系统在π~0频率围的幅频响应、相频响应。
(提示:用freqz 、abs 和angle 实现) 源代码:b=[0.2 0.1 0.3 0.1 0.2];a=[1 -1.1 1.5 -0.7 0.3];[h,w]=freqz(b,a);hf=abs(h);hx=angle(h);subplot(211),plot(w,hf)title('幅频响应')xlabel('x')ylabel('|X(e^jx)|')subplot(212)plot(w,hx)title('相频响应')xlabel('x')3. 已知序列()[]301,2,4,8≤≤=n n x ,()[]700,0,0,0,1,2,4,8≤≤=n n g ,()[]700,1,0,2,0,4,0,8≤≤=n n y ,()[]701,2,4,8,1,2,4,8≤≤=n n h ,求()n x 、g (n )、y (n )、h (n )的DFT 。
要求:(1)画出各DFT 的幅频特性和相频特性图(包括()()[]k X k X arg 和、()()[]k G k G arg 和、()()[]k Y k Y arg 和、()()[]k H k H arg 和图形);(提示:可考虑用FFT 计算DFT ;幅频特性用abs 函数;相频特性用angle 函数);(2)比较四种信号的频谱,看能得出什么结论?源代码:x=[8,4,2,1],n=0:1:3X=fft(x),V=abs(X),W=angle(X)subplot(241),stem(n,V),title('|X(k)|')subplot(242),stem(n,W),title('arg|X(k)]')g=[8,4,2,1,0,0,0,0],n=0:1:7G=fft(g),V=abs(G),W=angle(G)subplot(243),stem(n,V),title('|G(k)|')subplot(244),stem(n,W),title('arg|G(k)]')y=[8,0,4,0,2,0,1,0],n=0:1:7Y=fft(y),V=abs(Y),W=angle(Y)subplot(245),stem(n,V),title('|Y(k)|')subplot(246),stem(n,W),title('arg|Y(k)]')h=[8,4,2,1,8,4,2,1],n=0:1:7H=fft(h),V=abs(H),W=angle(H)subplot(247),stem(n,V),title('|H(k)|')subplot(248),stem(n,W),title('arg|H(k)]')思考题:1. 使用MATLAB 语言提供的快速傅里叶变换有关子函数进行有限长和无限长序列频谱分析时需注意哪些问题?在使用fft 函数时,对于有限长和无限长序列要注意点数N 的问题。
对于有限长序列,其N 值一般为该序列的长度;而对于无限长序列频谱分析时,首先要将无限长序列截断成有一个有限长序列,此时序列长度的取值N 对频谱有较大的影响。
一般来讲,N 值取得越大,曲线精度越高。
2. 因果稳定的离散系统必须满足的充分必要条件是什么?系统函数零极点的位置与系统冲激响应有何关系?对系统的幅度响应有何影响?因果稳定的离散系统必须满足的充分必要条件是其系统函数的收敛域必须包含单位圆的圆外区域。
系统函数零极点的位置与系统冲激响应的关系:零点的位置影响冲激响应的幅度大小,而极点位置影响冲激响应包络的变化趋势,当其极点在单位圆,则冲击响应的包络会随n 值的增大而衰减;如果极点在单位圆上,则包络不随n 而变化;若极点在单位圆外。
则冲激响应的包络将随n 值的增大而增大。
系统函数的零极点位置与系统幅频响应的关系是:在极点所在频率位置附近,幅度出现峰值,极点越靠近单位圆峰值越尖锐;在零点所在频率位置附近,频率响应幅度出现谷点,当零点在单位圆上时谷点为零值。
实验四 IIR 数字滤波器的设计1.利用脉冲响应不变法,用巴特沃斯滤波器原型设计一个低通滤波器,满足:dB 15,π3.0,dB 1,π2.0====s s p p A R ωω,采样频率为10000Hz 。
(提示信息:利用函数buttord ,butter ,impinvar )源代码:fs=10000;T=1/fs;Wp=0.2*pi/T;Ws=0.3*pi/T;Ap=1;As=15;[N,Wc]=buttord(Wp,Ws,Ap,As,'s');[B,A]=butter(N,Wc,'s');W=linspace(0,pi,400*pi);[D,C]=impinvar(B,A,fs);Hz=freqz(D,C,W);plot(W/pi,abs(Hz)/abs(Hz(1)));grid on ; title('巴特沃斯数字滤波器');xlabel('Frequency/Hz');ylabel('Magnitude')2.设计巴特沃斯低通数字滤波器,满足:采样频率Fs=10000Hz ,dB 15,π3.0,dB 1,π2.0====s s p p A R ωω。