数字信号处理实验1,2,3,4
- 格式:pdf
- 大小:249.09 KB
- 文档页数:10
数字信号处理实验信息252120502123赵梦然实验一快速傅里叶变换与信号频谱分析一.实验目的1. 在理论学习的基础上,通过本实验加深对离散傅里叶变换的理解。
2. 熟悉并掌握按时间抽取编写快速傅里叶变换(FFT)算法的程序。
3. 了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如频谱混淆、泄漏、栅栏效应等,以便在实际中正确使用FFT 算法进行信号处理。
二.实验内容1. 仔细分析教材第六章“时间抽取法FFT 的FORTRAN 程序”,编写出相应的使用FFT 进行信号频谱分析的Matlab 程序。
2. 用FFT 程序分析正弦信号,分别在以下情况进行分析,并讨论所得的结果:a) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.000625s;b) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.005s;c) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.0046875s;d) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.004s;e) 信号频率F=50Hz,采样点数N=64,采样间隔T=0.000625s;f) 信号频率F=250Hz,采样点数N=32,采样间隔T=0.005s;g) 将c)中信号后补32 个0,做64 点FFT,并与直接采样64 个点做FFT 的结果进行对比。
3. 思考题:1) 在实验a)、b)、c)和d)中,正弦信号的初始相位对频谱图中的幅度特性是否有影响?为什么?信号补零后做FFT 是否可以提高信号频谱的分辨率?为什么?三.实验程序function pushbutton1_Callback(hObject, eventdata, handles)F=str2double(get(handles.f,'string'));N=str2double(get(handles.n,'string'));T=str2double(get(handles.t,'string'));fai=str2double(get(handles.fai,'string'));zero=get(handles.zero,'value');%进行采样t=0:T:(N-1)*T;x=cos(2*pi*F*t+fai);%进行fft运算if zeroy=abs(fft(x,N+32));y=y/max(y);elsey=abs(fft(x));y=y/max(y);end%画图axes(handles.axes2);stem((0:N-1),x,'*');axes(handles.axes1);if zerostem((0:N+31),y,'.');elsestem((0:N-1),y);endxlabel('频率/Hz');ylabel('振幅');grid on;四.实验结果实验数据记录:(a)输入信号频率:50输入采样点数:32输入间隔时间:0.000625是否增加零点?否信号频率F=50Hz,采样长N=32,采样周期T=0.000625s,fs=1/T=1600Hz,基频为fs/N=50Hz,50/50=1.故此在频谱图上的第1个点和第31个点有值。
1-3 (1)解:05162/2/85 ,16ππωπ==∴是周期的周期为。
(2)解:80()() 2 /16, n j x n eT ππωπ-==∴是无理数是非周期的。
(3)解:0382/2/43,8ππωπ==∴是周期的周期为。
1-4()()()()00000000112120()()*()()(),()0(2)1, ()()()1,()1,(m nm n n nnnmm n n m n nm n m n n n n n n n n n n n n n y n x n h n x m h n m n n y n n n n N y n x m h n m y n n n βαββααβααβαβαβααβαβαβαα∞=-∞=----==+--+--+--==-<=≤≤+-=-==-=--=≠-=+-=∑∑∑∑(1)当时当时部分重叠)β()()()()()00-N 11111-12(3)1 ,()()().,1(),nm n n n nnm m n n m n nm n N m n N n N n N N n n n n n N n n n n n N y n x m h n m y n N βαββααβααβαβαβαβαβαβαβααβ=+----=-+=-+-++--+---≥+-=-==--==≠--==∑∑∑当时全重叠1-6[]1212120000()()[()()()()][()][()][()]()()()()()|x(n)|<=M y(n)|=|x(n)g(n)|<x T ax n bx n ag n x n bg n x m aT x n bT x n T x n n g n x n n g n n x n n x n +=+=+∴-=-≠--(1)解:y(n)=g(n)(n)系统是线性系统。
因此是移变的由于n 时刻的系统的输出只和n 时刻信号有关因此是因果的当输入x(n)满足是对应的输出|=M |()|()g n g n 因此若为有限信号则系统稳定,否则不稳定[]0012121212()()[()()]()()[()][()]nnnm n k n k n T ax n bx n ax m bx m ax k bx k aT x n bT x n ===+=+=+=+∴∑∑∑(2)解:系统是线性系统。
实验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+=。
实验一时域离散信号的产生及时域处理实验目的:了解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生成图形。
数字信号处理实验一实验目的:掌握利用Matlab产生各种离散时间信号,实现信号的相加、相乘及卷积运算实验函数:参考课本77-19页,注意式(2.11.1)的表达与各matlab子函数间的关系。
1、stem(x,y) % 绘制以x为横轴,y为纵轴的离散序列图形2、[h ,t] = impz(b, a) % 求解数字系统的冲激响应h,取样点数为缺省值[h, t] = impz(b, a, n) % 求解数字系统的冲激响应h,取样点数为nimpz(b, a) % 在当前窗口用stem(t, h)函数出图3、[h ,t] = dstep(b, a) % 求解数字系统的阶跃响应h,取样点数为缺省值[h, t] = dstep (b, a, n) % 求解数字系统的阶跃响应h,取样点数为ndstep (b, a) % 在当前窗口用stairs(t, h)函数出图4、y = filter(b,a,x) % 在已知系统差分方程或转移函数的情况下求系统输出实验原理:一、常用的时域离散信号及其程序1、产生单位抽样函数δ(n)n1 = -5;n2 = 5;n0 = 0;n = n1:n2;x = [n==n0]; % x在n=n0时为1,其余为0stem(n,x,'filled'); %filled:序列圆心处用实心圆表示axis([n1,n2,0,1.1*max(x)])title('单位抽样序列')xlabel('time(n)')ylabel('Amplitude:x(n)')2、产生单位阶跃序列u(n)n1 = -2;n2 = 8;n0 = 0;n = n1:n2;x = [n>=n0]; % x在n>=n0时为1,其余为0stem(n,x,'filled');axis([n1,n2,0,1.1*max(x)])title('单位阶跃序列')xlabel('time(n)')ylabel('Amplitude:x(n)')3、复指数序列复指数序列的表示式为()(),00,0j n e n x n n σω+⎧≥⎪=⎨<⎪⎩,当0ω=时,()x n 为实指数序列;当0σ=时,()x n 为虚指数序列,即()()cos sin j n e n j n ωωω=+,即其实部为余弦序列,虚部为正弦序列。
数字信号处理实验报告姓名:班级:通信学号:实验名称:频域抽样定理验证实验类型:验证试验指导教师:实习日期:2013.频域采样定理验证实验一. 实验目的:1. 加深对离散序列频域抽样定理的理解2.了解由频谱通过IFFT 计算连续时间信号的方法3.掌握用MATLAB 语言进行频域抽样与恢复时程序的编写方法 4、用MATLAB 语言将X(k)恢复为X(z)及X(e jw )。
二. 实验原理:1、1、频域采样定理: 如果序列x(n)的长度为M ,频域抽样点数为N ,则只有当频域采样点数N ≥M 时,才有x N (n)=IDFT[X(k)]=x(n),即可由频域采样X(k)无失真的恢复原序列 x(n)。
2、用X(k)表示X(z)的内插公式:∑-=-----=10111)(1)(N k kNN zWz k X Nz X内插函数: zWzkNNN z 1k111)(-----=ϕ频域内插公式:∑-=-=10)2()()(N Kj k Nk X e X πωϕω频域内插函数:e N j N N )21()2sin()2sin(1)(--=ωωωωϕ三. 实验任务与步骤:实验一:长度为26的三角形序列x(n)如图(b)所示,编写MATLAB 程序验证频域抽样定理。
实验二:已知一个时间序列的频谱为X(e jw )=2+4e -jw +6e -j2w +4e -j3w +2e -j4w分别取频域抽样点数N为3、5和10,用IPPT计算并求出其时间序列x(n),用图形显示各时间序列。
由此讨论原时域信号不失真地由频域抽样恢复的条件。
实验三:由X32(k)恢复X(z)和X(e jw)。
四.实验结论与分析:实验一:源程序:M=26;N=32;n=0:M; %产生M长三角波序列x(n)xa=0:floor(M/2);xb= ceil(M/2)-1:-1:0; xn=[xa,xb];Xk=fft(xn,512); %1024点FFT[x(n)], 用于近似序列x(n)的TF X32k=fft(xn,32); %32点FFT[x(n)]x32n=ifft(X32k); %32点IFFT[X32(k)]得到x32(n)X16k=X32k(1:2:N); %隔点抽取X32k得到X16(K)x16n=ifft(X16k,N/2); %16点IFFT[X16(k)]得到x16(n)subplot(3,2,2);stem(n,xn,'.');box ontitle('(b) 三角波序列x(n)');xlabel('n');ylabel('x(n)');axis([0,32,0,20])k=0:511;wk=2*k/512;subplot(3,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/2-1;subplot(3,2,3);stem(k,abs(X16k),'.');box ontitle('(c) 16点频域');xlabel('k');ylabel('|X_1_6(k)|');axis([0,8,0,200])n1=0:N/2-1;subplot(3,2,4);stem(n1,x16n,'.');box ontitle('(d) 16点IDFT[X_1_6(k)]');xlabel('n');ylabel('x_1_6(n)');axis([0,32,0,20]) k=0:N-1;subplot(3,2,5);stem(k,abs(X32k),'.');box on title('(e) 32点频域采样');xlabel('k'); ylabel('|X_3_2(k)|');axis([0,16,0,200]) n1=0:N-1;subplot(3,2,6);stem(n1,x32n,'.');box on title('(f) 32点IDFT[X_3_2(k)]');xlabel('n'); ylabel('x_3_2(n)');axis([0,32,0,20])结果如下所示:实验一分析:序列x(n)的长度M=26,由图中可以看出,当采样点数N=16<M 时,x 16(n)确实等于原三角序列x(n)以16为周期的周期延拓序列的主值序列。
实验一 离散时间信号分析一、实验目的1.熟悉MATLAB 应用环境,常用窗口的功能和使用方法。
2.掌握各种常用的序列,理解其数学表达式和波形表示。
3.掌握在计算机中生成及绘制数字信号波形的方法。
4.掌握序列的相加、相乘、移位、反褶、卷积等基本运算及计算机实现。
5.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。
二、实验原理1.序列的基本概念离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。
离散时间信号在数学上可用时间序列)}({n x 来表示,其中)(n x 代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为∞<<∞-n 的整数,n 取其它值)(n x 没有意义。
离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号)(t a x 进行等间隔采样,采样间隔为T ,得到一个有序的数字序列)}({nT x a 就是离散时间信号,简称序列。
2.常用序列常用序列有:单位脉冲序列(单位抽样))(n δ、单位阶跃序列)(n u 、矩形序列)(n R N 、实指数序列、复指数序列、正弦型序列等。
3.序列的基本运算序列的运算包括移位、反褶、和、积、点乘、累加、差分运算、卷积等。
4.序列的卷积运算)()()()()(n h n x m n h m x n y m *=-=∑∞-∞=上式的运算关系称为卷积运算,式中*代表两个序列卷积运算。
两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。
其计算的过程包括以下4个步骤(1)反褶:先将)(n x 和)(n h 的变量n 换成m ,变成)(m x 和)(m h ,再将)(m h 以纵轴为对称轴反褶成)(m h -。
(2)移位:将)(m h -移位n ,得)(m n h -。
当n 为正数时,右移n 位;当n 为负数时,左移n 位。
(3)相乘:将)(m n h -和)(m x 的对应点的值相乘。
数字信号处理实验报告通信0303 汪勇 学号:实验一:信号、系统及系统响应 1、实验目的:(1) 熟悉连续信号经理想采样前后的频谱变化关系,加深对时域采样定理的理解. (2) 熟悉时域离散系统的时域特性(3) 利用卷积方法观察分析系统的时域特性.(4) 掌握序列傅立叶变换的计算机实现方法,利用序列的傅立叶变换对连续信号,离散信号及系统响应进行频域分析.2、实验原理简述:对一个连续信号)(t xa 进行理想采样的过程可用下式表示:^x a(t)= )(t xa p(t)其中^x a(t)为)(t xa 的理想采样,p(t)为周期冲激脉冲,即p(t)=∑∞-∞=n δ(t-nT )^x a(t)的傅立叶变换^X a(j Ω)为^X a(j Ω)=[])(1s m Tn aX Ω-Ω∑∞-∞=上式表明^X a(j Ω)为)(Ωj Xa 的周期延拓,其周期延拓为采样角频率(T s π2=Ω).采样前后信号的频谱示意图见图.只有满足采样定理时,才不会发生频率混叠失真.离散信号和系统在时域均可用序列来表示。
为了在数字计算机上观察分析各种序列的频域特性,通常对()e j X ω在[]π2,0上进行M 点采样来观察分析。
对长度为N 的有限长序列x(n)有()()ee nj N n kj k m x Xωω--=∑=10其中,1,0,2==k k Mkπω,M-1 一个时域离散线性非移变系统的输入/输出关系为y(n)=x(n)*h(n)=()()m n h m x m -∑∞-∞=如果x(n)和h(n)的长度分别为M 和N ,则y(n)的长度为L=N+M-1。
上述卷积运算也可在频域实现()()()e e e j j j H X Yωωω=3、实验内容及步骤首先认真复习采样理论.离散信号与系统.线性卷积.序列的傅立叶变换及性质等有关内容,了解本实验原理与方法.1>编制实验用主程序及相应子程序.①信号产生子程序,用于产生实验中要用的下列信号序列: a) 采样信号序列:对下面连续信号:()()()t u t A t ex ataΩ-=0sin进行采样,可得到采样序列()()()()500,sin 0<≤==Ω=n n u nT A nT n e x x anTa a其中A 为幅度因子,a 为衰减因子,是模拟角频率,T 为采样间隔.这些参数都要在实验过程中由键盘输入,产生不同的x(t)和x(n)b) 单位脉冲序列:()[]n n x bδ=c) 矩形序列:()()10,==N n n R x Nc②系统单位脉冲响应序列产生子程序.本实验要用到两种FIR 系统.()()()()()()()325.215.210-+-+-+==n n n n n n n hR h baδδδδ ③有限长序列线性卷积子程序,用于完成两个给定长度的序列的卷积.可以直接调用MATLAB 语言中的卷积函数conv 。
数字信号处理实验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来计算两个有限长序列的卷积。
实验一:熟悉MATLAB环境一、思考题:1、比较实验内容第2题中的第4和第5小题的结果,试说明对于周期性信号应当如何采样才能保证周期扩展后与原信号保持一致?答:对于周期性信号,在进行采样时,其采样周期必须满足采样定理,即采样频率应该大于信号最高频率的两倍,这样才能避免迭混,以便采样后仍能准确的恢复原信号。
2、对于有限长序列,如何用MATLAB计算其DTFT?答:用函数freqz可以计算序列在给定的离散频率点上的DTFT,该变换序列是以形如式的有理函数来描述的。
这个函数的表达形式有H=freqz(num,den,w)、[H,w]=freqz(num,den,k)。
函数freqz返回的频率响应值为向量H。
在H=freqz(num,den,w)中,0到π之间指定的频率集由向量w给出。
freqz函数的自变量k就是频率点的总数。
3、对于由两个子系统级联或并联的系统,如何用MATLAB计算他们的幅频响应与相频响应?答:系统的级联或并联实现涉及到了因式分解。
在MATLAB中,我们可以用函数roots来实现多项式的因式分解。
例如,函数r=roots(h)会返回多项式向量h 的根向量。
向量h是以的升幂表示的多项式的系数。
通过计算所得的根向量,可以求出二次因式的系数。
更简单的方法是用从以给定的传输函数H(z)直接求出二阶因式的函数zp2sos。
函数sos=zp2sos(z,p,k)产生以零—极点形式确定的等效传输函数H(z)的每个二阶部分系数的矩阵sos。
二、实验内容:第一到四题源程序:第二题图:第五题:%函数命名:function [x1]=stepshift(n0,n1,n2) n=[n1:n2];x1=[(n-n0)>=0];%源程序:>> [x1]=stepshift(2,1,10);>> n=1:10;>> stem(n,x1);第六题:>> b=[1,sqrt(2),1];>> a=[1,-0.67,0.9];>> [h,w]=freqz(b,a);>> am=20*log10(abs(h)); %求幅频特性>> subplot(2,1,1);plot(w,am);>> xlabel('w');ylabel('am');>> ph=angle(h); %求相频特性>> subplot(2,1,2);plot(w,ph);>> xlabel('w');ylabel('ph');第七题:源程序:>> a=[8 -2 -1 2 3];>> b=[2 3 -1 -3];>> c=conv(a,b); %求a、b的线性卷积>> m=length(c)-1;>> n=0:1:m;>> stem(n,c);>> xlabel('n');ylabel('幅度');第八题:源程序:>> n=50;>> a=[1 -2];>> b=[1 0.1 -0.06];>> x=[1 zeros(1,n-1)];>> k=0:1:n-1;>> y=filter(a,b,x);>> stem(k,y);>> xlabel('n');ylabel('幅度');三、实验总结:通过本次实验,熟悉并掌握MATLAB的主要命令操作,比如序列的简单运算、矩阵的输入和计算等,能熟练编写绘图程序,在计算卷积和绘制幅频响应和相频响应的过程中,充分地巩固了数字信号处理学的理论知识,总之,收获颇多。
k1r xk2r x yk2r y x桂林理工大学实验报告1.实验目的(1)掌握信号表示方法。
(2)掌握离散信号的延迟、相加、相乘及平移、反折变换 2.实验原理与方法首先,在用MATLAB 表示离散序列并将其可视化时,我们还应注意以下几点: 第一、离散时间序列无法用符号运算来表示,要用矩阵的形式;第二、由于在MATLAB 中矩阵的元素个数有限,因此,MATLAB 无法表示无限长的序列;第三、在绘制离散信号波形的函数stem 命令,而不是plot 命令。
习题1-2 计算卷积(2)x[k=g[k]={k+1;0<=k<=3} 实验程序为 x=[1,2,3,4]; kx=0:3; g=[1,2,3,4]; kg=0:3; y1 = conv(x, g); xf=fliplr(x) y2 = conv(xf,g);k1=kx(1)+kg(1):kx(end)+kg(end); stem(k1,y1);xlabel('k1'); ylabel('y1'); 习题1-3 (1)已知序列想x[k]={1,2,3,4;k=0,1,2,3},y[k]={-1,1,-2,3;k=0,1,2,3},试计算序列x[k]的自相关函数rx[n],以及序列x[k]与y[k]的互相关函数rxy[k]和ryx[k]。
(2)若某两个序列的自相关函数rx[k]相同,则该两个序列之间存在何种关系?(3)若信号s[k]=x[k]+n[k],x[k]与n[k]相关性很小,如何判断s[k]中存在x[k]?x=[1,2,3,4]; kx=0:3;y=[-1,1,-2,3]; ky=0:3; xf=fliplr(x);rx = conv(x, x+1);rxy = conv(xf,y);ryx=conv(y,xf); k1=kx(1)+ky(1):kx(end)+ky(end); kxf=-fliplr(kx); k2=kxf(1)+ky(1):kxf(end)+ky(end);subplot(1,3,1)stem(k1,rx);xlabel('k1'); ylabel('rx');subplot(1,3,2) stem(k2,rxy); xlabel('k2'); ylabel('rxy'); subplot(1,3,3); stem(k2,ryx);xlabel('k2'); ylabel('ryx');(2)因为rx[n]=x[n]*x[-n],所以这两个序列相等或互为翻转序列。
实验一 MATLAB基本操作班级:姓名:学号:一、实验目的1、掌握MATLAB的矩阵运算;2、掌握MATLAB常用库函数的用法;3、掌握MATLAB的输入输出语句和控制语句;4、掌握MATLAB的作图方法;5、掌握MATLAB的M文件和M函数。
二、实验原理1.矩阵的赋值及运算2.MATLAB常用库函数的用法3.MATLAB的输入输出语句和控制语句4.MATLAB的作图方法5.MATLAB的M文件和M函数三、实验内容1、用MATLAB产生矩阵:A⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦123654795,B⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦222136248,C⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦101213并进行如下计算:(1)分别求出A和B的逆矩阵A-1和B-1;(2)分别计算A*B和B*A,并计较它们的结果;(3)将A*B的结果对角化,形成一个对角矩阵;(4)解方程组:Ax=C。
2、设x=2,y=3,用MATLAB计算下面的表达式:(1);(23、用MATLAB产生一个⨯33的复数矩阵,并对其进行转置和共轭转置。
4、用MATLAB 编写一段程序,将你的学号输出到磁盘文件中,文件名即为你的学号,扩展名为“.txt ”。
5、分别用MATLAB 编写程序,实现以下运算: (1)+++⋅⋅⋅+123100; (2)⨯⨯⨯⋅⋅⋅⨯12310。
6、用MATLAB 作出以下函数的图像(自变量每隔0.1取一个点): (1)sin()y x =-21,πx ≤≤02; (2)e x y =,x -≤≤55; (3)ln y x =,.x ≤≤015。
7、用MATLAB 编写一个M 函数,输入a 、b 、c 三个参数,输出以下函数的图像:y ax bx c =++2,b bx a a--≤≤-+5522(自变量每隔0.1取一个点), 请将该函数保存为M 文件的形式,并在MATLAB 命令窗口中调用该函数。
四、实验结果与分析1.(1)程序:A=[1 2 3;6 5 4;7 9 5];B=[2 2 2;1 3 6;2 4 8]; d1=inv(A) d2=inv(B) 结果0.1667-0.11900.45240.33330.3810-0.0476-0.1667-0.40480.2619-A 1-= 1.00001.0000-0.5000- 2.5000-3.00001.0000 1.50002.0000-0B 1-= (2)程序:A=[1 2 3;6 5 4;7 9 5]; B=[2 2 2;1 3 6;2 4 8]; d3=A*B d4=B*A 结果:1086133744325382010B A *=629682457161243228A B *=(3)程序:A=[1 2 3;6 5 4;7 9 5]; B=[2 2 2;1 3 6;2 4 8]; d5=diag(diag(A*B)) 结果:1080004300010d5=(4) 程序:A=[1 2 3;6 5 4;7 9 5];C=[10;12;13]; x=inv(A)*C结果:3.78570.7143-0.0714x =分析:根据要求将A,B,C 矩阵复制后分别根据语句“逆矩阵:d3=inv(a)、相乘:C3=A*B ,C4=B*A ,对角化:d7=diag(diag(a))、左除:x=a\b=inv(a)*b ,a*x=b 即可得到实验结果。
实验要求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. 熟悉MATLAB 环境的主要操作命令。
2. 掌握简单的绘图命令。
3. 用MATLAB 编程并学会创建函数。
二、实验仪器装有MATLAB 语言的计算机 三、实验原理MATLAB 的基本命令和函数 四、实验内容和要求1. 序列的产生1)编写MATLAB 程序,产生并绘制一个单位样本(单位冲激或单位阶跃)序列2)编写MATLAB 程序,生成一个实数值的指数序列(例:1508.0)(≤≤=n n x n 或150)()32.0(≤≤=+n e n x nj );3)编写MATLAB 程序,产生一个正弦信号;(例:150)1.025.0sin(2)2.0125.0cos(3)(≤≤+++=n n n n x ππππ)实验二离散序列的基本运算一、实验目的(1)进一步了解离散时间序列时域的基本运算。
(2)了解MATLAB语言进行离散序列运算的常用函数,掌握离散序列运算程序的编写方法。
二、实验原理离散序列的时域运算包括信号的相加、相乘,信号的时域变换包括信号的移位、反折、倒相及信号的尺度变换等。
三、实验内容1、x(n)=u(n-2)+u(n+2),(-5<n<5)。
MATLAB程序如下:n1=-5;n2=5;n01=2,n02=-2;n=n1:n2;x1=[(n-n01)>=0];x2=[(n-n02)>=0];x3=x1+x2;subplot(3,1,1);stem(n,x1,'filled');axis([n1,n2,1.1*min(x1),1.1*max(x1)]);ylabel('u(n-2)');subplot(3,1,2);stem(n,x2,'filled');axis([n1,n2,1.1*min(x2),1.1*max(x2)]);ylabel('u(n+2)');subplot(3,1,3);stem(n,x3,'filled');axis([n1,n2,1.1*min(x3),1.1*max(x3)]);ylabel('u(n-2)+u(n+2)');2、已知x(n)=3cos(2πn/10),试显示x(n-3)和x(n+3)在0<n<20区间的波形。