00讲稿实验二 用MATLAB实现线性系统的时域分析

时间:2019-05-14 16:58:46下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《00讲稿实验二 用MATLAB实现线性系统的时域分析》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《00讲稿实验二 用MATLAB实现线性系统的时域分析》。

第一篇:00讲稿实验二 用MATLAB实现线性系统的时域分析

实验二

用MATLAB实现线性系统的时域分析

[实验目的] 1.研究线性系统在典型输入信号作用下的暂态响应; 2.熟悉线性系统的暂态性能指标;

3.研究二阶系统重要参数阻尼比ξ对系统动态性能的影响; 4.熟悉在MATLAB下判断系统稳定性的方法; 5.熟悉在MATLAB下求取稳态误差的方法。

[实验指导] MATLAB中有两类用于求解系统时域响应的方法。

其一是利用 MATLAB 中的控制系统工具箱(Control System Toolbox)提供的函数(命令);

其二是Simulink仿真,它主要用于对复杂系统进行建模和仿真。

一、用MATLAB函数(命令)进行暂态响应分析 1 求取线性连续系统的单位阶跃响应的函数——step

基本格式为: step(sys)

step(num,den)

step(A,B,C,D)step(sys,t)step(sys1,sys2,…,t)y=step(sys,t)[y,t]=step(sys)[y,t,x]=step(sys)

其中模型对象的类型如下:

sys = tf(num,den)多项式模型 sys = zpk(z,p,k)零点极点模型 sys = ss(a,b,c,d)状态空间模型 参数无t,表示时间向量t的范围自动设定。

参数有t,表示给定时间向量t,应该有初值,时间增量,末值,如t=0:0.01:2。

前5种函数可以绘出阶跃响应曲线;后3种函数不绘阶跃响应曲线,而是返回响应变量y,时间向量t,以及状态变量x。求取线性连续系统的单位脉冲响应的函数——impulse

基本格式为: impulse(sys)impulse(num,den)impulse(sys,tf)impulse(sys,t)impulse(sys1,sys2,…,t)y=impulse(sys,t)[y,t]=impulse(sys)[y,t,x]=impulse(sys)求取线性连续系统的单位斜坡响应

MATLAB没有直接求系统斜坡响应的功能函数。在求取控制系统的斜坡响应时,通常用阶跃响应函数step()求取传递函数为 G(s)/s的系统的阶跃响应,则其结果就是原系统G(s)的斜坡响应。原因是,单位阶跃信号的拉氏变换为1/s,而单位斜坡信号的拉氏变换为1/s2。4.求取线性连续系统对任意输入的响应的函数——lsim 其格式为

y=lsim(sys,u,t)

其中,t为仿真时间,u为控制系统的任意输入信号。5.暂态响应性能指标

在阶跃响应曲线窗口,使用右键弹出浮动菜单,选择其中的Characteristics子菜单,有4个子项:

①Peak Response

峰值响应,点击将出现标峰值记点,单击此标记点可获得峰值幅值,超调量和峰值时间。

②Settling Time

调节时间,点击将出现调节时间标记点,单击此标记点即可获得调节时间。

③Rise Time

上升时间,点击将出现上升时间标记点,单击此标记点即可获得上升时间。

④Steady State

稳定状态,若系统稳定,点击将在稳态值处出现标记点,单击此标记点即可获得稳态值;若系统不稳定,标记点不会出现。

对于不同的系统响应类型,Characteristics菜单的内容并不相同。虽然不同响应曲线的特 性参数不相同,但是均可以使用类似的方法从系统响应曲线中获得相应的信息。

Step Response1.5 System: sys Settling Time: 3.4 1.5Step ResponseAmplitude0.5Amplitude110.5 System: sys Peak amplitude: 1.11 Overshoot(%): 10.8 At time: 2.22 00123450024Time(sec)68Time(sec)

6、其它

①hold on 命令:可以允许在已经画曲线的图形窗口上再画新曲线;hold off命令取消该功能。

②figure(i)命令:打开第i个图形窗口,把曲线绘在该图形窗口。③grid on命令:使图上出现网格。

④subplot(m,n,p)命令;把一个画面分成m×n个图形区域, p代表当前的区域号,可在每个区域中分别画一个图。

⑤也可以通过主界面菜单file/new/figure打开1个新图形窗口,系统自动为其编号。7.举例

例1:系统传递函数为G(s)20s33,求其阶跃响应、脉冲响应、斜坡响应、2s2s10①分3个图形窗口分别显示的程序:

>> n=[20,33];d=[1,2,10];sys=tf(n,d);step(sys);figure(2);impulse(sys);n1=[20,33];d1=[1,2,10,0];sys1=tf(n1,d1);figure(3);step(sys1)运行结果:

Step Response7 System: sys Peak amplitude: 6.68 Overshoot(%): 103 At time: 0.607 65Amplitude4 System: sys Rise Time: 0.142 System: sys Settling Time: 4.13 System: sys DC gain: 3.3 32100123Time(sec)456

Impulse Response20 System: sys Peak amplitude: 20 At time: 0 1510Amplitude5 System: sys Settling Time: 3.5 0-5-100123Time(sec)456

Step Response353025Amplitude20***5Time(sec)678910

③在1个窗口中的3个子图形窗口显示的程序:

>> figure(1);n=[20,33];d=[1,2,10];sys=tf(n,d);subplot(2,2,1);impulse(sys);subplot(2,2,2);n1=[20,33];d1=[1,2,10,0];sys1=tf(n1,d1);step(sys1);subplot(2,2,3);step(sys)运行结果:

Impulse Response204030AmplitudeStep ResponseAmplitude10201000-1002Time(sec)4605Time(sec)10Step Response86Amplitude42002Time(sec)46

例2:系统传递函数为G(s)10,求输入分别是自定义的1(t)和4*1(t)时的响应。2s2s10①2个输入和2个输出波形分别在4个子图形窗口显示的程序:

>> figure(7);n=[10];d=[1,2,10];sys=tf(n,d);subplot(2,2,1);u=1+0*t;t=0:0.01:10;plot(t,u);subplot(2,2,3);y=lsim(sys,u,t);plot(t,y);>> u1=4+0*t;subplot(2,2,2);plot(t,u1);subplot(2,2,4);y1=lsim(sys,u1,t);plot(t,y1)

运行结果:

21.510.5054.543.53051005101.56140.520051000510 ②2个输入和2个输出波形在1个图形窗口同时显示的程序:

>> n=[10];d=[1,2,10];sys=tf(n,d);t=0:0.01:10;u=1+0*t;sys2=tf([1],[1]);lsim(sys2,u,t);hold on;lsim(sys,u,t);u1=4+0*t;plot(t,u1);lsim(sys,u1,t)

Linear Simulation Results654Amplitude3210012345Time(sec)678910

例3:系统传递函数为G(s)20,求输入分别是自定义的1(t)+3*sin(t)时的响应。2s2s10程序;

>> n=[20];d=[1,2,10];sys=tf(n,d);t=0:0.001:15;u=1+sin(t);sys2=tf([1],[1]);figure(16);lsim(sys2,u,t);hold on;lsim(sys,u,t)

Linear Simulation Results105Amplitude0-505Time(sec)1015

例4:系统传递函数为G(s)20,求系统的阶跃响应。

s32s22s10程序;

>> n=[20];d=[1,2,6,10];sys=tf(n,d);figure(24);step(sys)

Step Response32.52Amplitude1.510.5005101520Time(sec)25303540

二、用Simulink进行暂态响应分析

1.系统仿真方框图的建立

方框图的建立与实验一中所述相同,不同点是不用输入点与输出点标记,输入点安置信号发生器,比如阶跃输入信号;输出点安置示波器。需要如下操作:

打开Simulink→Sources子库,将step模块(阶跃输入信号)复制到(拽到)模型文件窗口,放到相应位置。(或其他输入信号模块)

打开Simulink→Sinks子库,将scope模块(示波器)复制到(拽到)模型文件窗口,放到相应位置。

输入信号模块和示波器模块都可以进行参数设置。2.设置仿真控制参数

打开Simulation菜单,找到Parameters选项,可打开参数设置对话框。它包括仿真时间范围的选择、仿真算法的选择、仿真步长的指定及仿真精度(误差)的定义等。

3.运行

可选择 Simulation→ Start。点击示波器,在示波器窗口中可以看到响应仿真曲线。

举例;系统方框图和阶跃输入下示波器显示的响应曲线如下:

s+242s +s+10StepTransfer FcnScope

三、在MATLAB下判断系统稳定性

首先求得闭环传递函数,再使用MATLAB函数(命令)roots(den)解出特征方程的根,即闭环极点,再根据极点位置,判断系统是否稳定。

举例:判断系统G(s)程序和结果:

>> d=[1 2 8 5 26];roots(d)ans =

-1.4509 + 2.1633i

-1.45091.9049i 分析判断:有2个根在s平面右半部分,系统不稳定。或者:

>> n=[50];d=[1 2 8 5 26];sys=tf(n,d)

Transfer function:

50---------s^4 + 2 s^3 + 8 s^2 + 5 s + 26

是否稳定。

s42s38s25s26>> roots(sys.den{1})

ans =

-1.4509 + 2.1633i

-1.45091.9049i

四、在MATLAB下求取稳态误差

求取稳态误差终值的函数(命令)为dcgain()调用格式为

dcg=dcgain(G)其中

G=s·R(S)·φe(S)

R(S): 输入信号的拉氏变换;

φe(S):误差传递函数;

举例:系统前向通道传递函数为G(s)50,反馈通道传递函数为322s8s5s8H(s)4/25,求输入为r(t)=1(t)时的稳态误差。

1解:e(s)1G(s)H(s)程序和结果:

12s38s25s83

5042s8s25s16132s8s25s825>> n=[50];d=[ 2 8 5 8];sys=tf(n,d);n1=4;d1=25;sys1=tf(n1,d1);sys2=1+sys*sys1;sys3=tf(sys2.den,sys2.num);n4=[1,0];d4=[1];sys4=tf(n4,d4);n5=1;d5=[1 0];r=tf(n5,d5);dcg=dcgain(sys3*sys4*r)dcg =

0.5000 [实验内容] 1.研究一阶系统对阶跃输入、脉冲输入、斜坡输入、自定义输入的响应及性能指标。一阶系统系统具体参数自定。

2.研究二阶系统对阶跃输入、脉冲输入、斜坡输入、自定义输入的响应及性能指标。具体参数自定。哪一个参数变化及变化方案自定。

①典型二阶系统在阶跃输入下,阻尼比或自然振荡频率改变对某1项性能指标的影响。②非典型二阶系统与典型二阶系统在阶跃输入下的响应有什么不同。

3.高于二阶的系统对阶跃输入、脉冲输入、斜坡输入、自定义输入的响应。具体参数自定。4.自定一系统闭环传递函数,计算在r(t)=1(t)、t、0.5t2下的给定稳态误差。5.自定一系统闭环传递函数,判断系统稳定性。[实验报告要求] 1.写明实验目的和实验原理。实验原理中简要说明得到系统暂态响应的方法和采用的语句或函数,说明求取给定稳态误差的方法及采用的语句或函数,说明判断系统稳定性方法。

2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。不方便打印的同学,要求手动从屏幕上抄写和绘制。

3.简要写出实验心得和问题或建议。

第二篇:第5章高等数学计算的MATLAB实现讲稿

第5章 高等数学计算的MATLAB实现

高等数学是大学数学学习的基本内容。利用MATLAB的符号工具箱,可以解决极限、导数、微分、积分、级数和微分方程等方面的问题。

5.1 函数和极限

5.1.1 函数

使用符号表达式,可以进行复合函数运算和反函数运算,下面分别予以介绍。

⒈ 复合函数运算

在MATLAB中,符号表达式的复合函数运算主要是通过函数compose来实现的。compose函数的调用格式如下:

●compose(f,g):返回复合函数f(g(y))。在这里ff(x),gg(y)。其中,x是findsym定义的f函数的符号变量,y是findsym定义的g函数的符号变量。

●compose(f,g,z):返回自变量为z的复合函数f(g(z))。在这里,f=f(x),g=g(y),x,y分别是findsym定义的f函数和g函数的符号变量。

●compose(f,g,x,z):返回复合函数f(g(z)),并且使x成为f函数的独立变量。如:f=cos(x/t),compose(f,g,x,z)返回cos(g(z)/t),而compose(f,g,t,z)返回cos(x/g(z))。

●compose(f,g,x,y,z):返回复合函数f(g(z)),并且使x与y分别成为函数f与g的独立变量。

例5-1 将fx和xtany复合到一个函数中,指定x和y为它们的独立变量,自变量为z。

程序:

syms x y t z;g=tan(y);f=x^t;compose(f,g,x,y,z)%求复合函数 运行结果: ans = tan(z)^t ⒉ 符号表达式的反函数运算 在MATLAB中,符号表达式的反函数运算主要是通过函数finverse来实现的。finverse函数的调用格式如下。

5.2 导数

5.2.1 求函数的导数

在MATLAB中,微分和求导都可以由函数diff实现。diff函数可同时处理数值和符号两种情况下的求导和微分。该函数的调用格式如下所示。

●diff(F):对findsym函数返回独立变量求微分,F为符号表达式。●diff(F,'a'):对a变量求微分,F为符号表达式。

●diff(F,n):对findsym函数返回的独立变量求n次微分,F为符号表达式。●diff(F,'a',n)或diff(F,n,'a'):对变量a求n次微分,F为符号表达式。

(x1)5例5-4 求f(x)的二阶导数。

x1程序: syms x f=(x-1)^5/(x+1);df=diff(f,1);%求导数 d2f=diff(f,2);df=simplify(df)%化简 d2f=simplify(d2f)运行结果: df = 2*(x-1)^4*(2*x+3)/(x+1)^2 d2f = 4*(x-1)^3*(3*x^2+9*x+8)/(x+1)^3 5.2.2 求隐函数的导数

例5-5 求隐函数

1F(x,y)xysiny

2所确定的导数dy。dx程序:

%求隐函数的导数

f=sym('x-y+1/2*sin(y)');fx=diff(f,'x');fy=diff(f,'y');

5.3.1 渐近线

求函数图形的水平渐近线,需要求x趋于无穷时f的极限,即

limit(f,inf)limit(f,-inf)求f的垂直渐近线,使分母等于0,用下面的命令进行求解。roots=solve(denom)%返回方程xx30的解。综合程序: syms x num=3*x^2+6*x-1;denom=x^2+x-3;f=num/denom;a=limit(f,inf);b=double(a);roots=solve(denom);ezplot(f)%符号函数作图命令。

hold on%在原有的图形上面叠加图形。plot([-2*pi 2*pi],[b b], 'g')%绘水平渐近线

plot(double(roots(1))*[1 1],[-5 10], 'r')%绘垂直渐近线 plot(double(roots(2))*[1 1],[-5 10], 'r')%绘垂直渐近线 title('水平渐近线和垂直渐近线')hold off%取消图形叠加 运行结果见图5-1。5.3.2 极值

23x26x1从图5-1可以看出,函数f(x)至少有2个极值点,求解

x2x3程序:

syms x num=3*x^2+6*x-1;denom=x^2+x-3;f=num/denom;a=limit(f,inf);b=double(a);roots=solve(denom);ezplot(f)%符号函数作图命令。

hold on%在原有的图形上面叠加图形。plot([-2*pi 2*pi],[b b], 'g')%绘水平渐近线

图5-2 表示函数的渐近线和极值

5.3.3 拐点

求函数的拐点,需要先求函数的2阶导数,后面的处理方法与求极值方法相似。

5.4 不定积分和定积分

MATLAB中,用符号工具箱的int函数求函数的不定积分和定积分。int函数的调用格式如下所示。

●int(F):对findsym函数返回独立变量求不定积分,F为符号表达式。

●int(F,v):对v变量求不定积分,F为符号表达式。

●int(F,a,b):对findsym函数返回独立变量求从a到b的定积分,F为符号表达式。

●int(F,v,a,b):对v变量求从a到b的定积分,F为符号表达式。

5.4.4 定积分的应用

例5-11 计算由两条抛物线y2x,yx2所围成的图形的面积。程序:

%求曲线的交点

[x1,y1]=solve('y^2=x','y=x^2');x1=double(x1);y1=double(y1);n=numel(x1);%下面寻找实数解 m=1;x0=[];y0=[];for k=1:n

if isreal(x1(k))&&isreal(x1(k))

x0(m)=x1(k);y0(m)=y1(k);

m=m+1;

end end x0=sort(x0);y0=sort(y0);%排序 %下面计算定积分 syms x f=sqrt(x)-x^2;A=int(f,x,x0(1),x0(2))运行结果: A = 1/3 x2y2例5-12 计算由椭圆221所围成的图形绕x轴旋转而成的旋转ab体的体积。

V程序:

syms a b x f=pi*b*b*(a*a-x*x)/a/a;V=int(f,x,-a,a)运行结果: V = 4/3*pi*b^2*a 例5-13 计算由曲线yaab2a2(a2x2)dx

23/2x上相应于x从a到b的一段弧的长度。3-9

0 d =

-3 f =

-1 g =

-3 例5-16 已知三点M(1,1,1)、A(2,2,1)和B(2,1,2),求AMB。程序:

M=[1 1 1];A=[2 2 1];B=[2 1 2];ma=A-M;mb=B-M;c=dot(ma,mb)/sqrt(dot(ma,ma))/sqrt(dot(mb,mb));amb=acos(c)运行结果: amb =

1.0472 例5-17 已知三角形ABC的顶点是A(1,2,3)、B(3,4,5)和C(2,4,7)求三角形ABC的面积。

程序:

A=[1 2 3];B=[3 4 5];C=[2 4 7];ab=B-A;ac=C-A;S=sqrt(dot(cross(ab,ac),cross(ab,ac)))/2 运行结果: S =

3.7417 5.5.2 曲面及其方程

利用MATLAB提供的绘图函数,可以绘制给定函数的曲面。相关内容在前面已介绍过,请参见4.2.4小节。

5.6 多元函数的极限和求导

对于函数有多个变量的情况,求极限和导数时需要指定函数对哪个变量进行求取。在MATLAB中仍然使用limit和diff函数求多元函数的极限和导数。5.6.1 求多元函数的极限

例5-18 求极限limsin(xy)sin(x)。

y0y-11●symsum(s):求符号表达式s相对于符号变量k的和,k由findsym函数确定,取值从0到k-1。

●symsum(s,v):求符号表达式s相对于符号变量v的和,v从0到v-1。●symsum(s,a,b)和symsum(s,v,a,b):指定符号表达式s从v=a累加到v=b。

1例5-21 求级数k、2和xk(x1)。

i0k1kk0n1程序:

syms x k n s1=symsum(n)s2=symsum(1/k^2,1,inf)s3=symsum(x^k,k,0,inf)运行结果: s1 = 1/2*n^2-1/2*n s2 = 1/6*pi^2 s3 =-1/(x-1)5.7.2 泰勒级数展开

用taylor函数进行泰勒级数展开。该函数的调用格式如下:

●taylor(f,n,v):返回f的n-1阶马克劳林多项式近似。f为表示函数的符号表达式,v指定表达式中的独立变量。v可以是字符串或符号变量。

●taylor(f,n,v,a):返回f关于a的n-1阶泰勒级数近似。变量a可以是数值、符号或表示数值值或未知值的字符串。n,v和a的顺序没有先后之分。taylor函数根据变量的位置和类型确定它们的用途。还可以忽略n,v,a等变量中的任何一个。如果不确定v,taylor函数用findsym函数确定函数的独立变量。n的默认值为6。

f(n)(a)泰勒级数:f(x)(xa)n。

n!n01例5-22 求函数f(x)的泰勒级数展开,取前9项。

54cosx程序: syms x f=1/(5+4*cos(x));t=taylor(f,9)运行结果:

3d2y2cos2xydx例5-24 求解微分方程yx01

dyx00dx程序:

y=dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x');%求解微分方程 y=simplify(y)%化简y的形式。运行结果: y = 4/3*cos(x)-2/3*cos(x)^2+1/3

习题五

1、完成实验指导书中的实验五的上半部分。

第三篇:武汉工程大学matlab实验二离散时间信号的分析实验

武汉工程大学

数字信号处理实验报告二

专业班级:

14级通信03班 学生姓名:秦重双 学号:

1404201114 实验时间:

2017年5月3日 实验地点:

4B315 指导老师:杨述斌

实验一离散时间信号的分析实验

一、实验目的

① 认识常用的各种信号,理解其数学表达式和波形表示。② 掌握在计算机中生成及绘制数值信号波形的方法。③ 掌握序列的简单运算及计算机实现与作用。

④ 理解离散时间傅里叶变换、Z变换及它们的性质和信号的频域特性。

二、实验设备

计算机,MATLAB语言环境。

三、实验基础理论

1、序列的相关概念

离散时间信号用一个称为样本的数字序列来表示。一般用{x[n]}表示,其中自变量n的取值范围是﹣∞到﹢∞之间的整数。为了表示方便,序列通常直接用x[n]表示。

离散时间信号可以是一个有限长序列,也可以是一个无限长序列。有限长(也称为有限时宽)序列仅定义在有限的时间间隔中:﹣∞≤N1 ≤N2 ≤+∝.有限长序列的长度或时宽为N=N1-N2+1。

满足x[n+kN]=x[n](对于所有n)的序列称为周期为N的周期序列,其中N取任意正整数;k取任意整数;

2、常见序列

常见序列有单位取样值信号、单位阶跃序列、矩形序列、斜变序列、单边指数序列、正弦序列、复指数序列等。

3、序列的基本运算

序列的基本运算有加法、乘法、倒置(反转)、移位、尺度变换、卷积等。

4、离散傅里叶变换的相关概念

5、Z变换的相关概念

四.实验内容与步骤

1、知识准备

认真复习以上基础理论,理解本实验所用到的实验原理。

2、离散时间信号(序列)的产生

利用MATLAB语言编程和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形,以加深对离散信号时域表示的理解。① 单位取样值信号

Matlab程序

x=0;y=1;stem(x,y);title('单位样值');axis([-2,2,0,1]);

② 单位阶跃序列 Matlab程序

n0=0;n1=-5;n2=5;n=[n1:n2];x=[(n-n0)>=0];stem(n,x);xlabel('n');ylabel('x(n)');title('单位阶跃序列');

③ 指数序列、正弦序列 Matlab程序

n=[0:10];x=(1/3).^n;stem(n,x);xlabel('n');ylabel('x(n)');title('指数序列');

n=[-20:20];x=2*sin(0.5.*n);stem(n,x);xlabel('n');ylabel('x(n)');axis([-20,20,-3,3]);title('正弦序列');

④ 随机离散信号矩形序列 Matlab程序

n=[1:10];x=rand(1,10);stem(n,x);xlabel('n');ylabel('x(n)');title('随机序列');

3、序列的运算

数字信号处理的目的,就是从一个或几个给定的离散时间信号中产生一个具有所需性质的信号。处理算法由加法、乘法、倒置(反转)、移位、尺度变换、卷积等基本运算组合构成。此部分实验将通过几个简单常见的例子说明这些基本运算的实际运用,以便进一步理解序列的简单运算及计算机实现与作用。(1)信号平滑 利用MATLAB语言编程实现信号平滑运算。信号平滑是数字信号处理应用中的一个常见的算法,以虑出被加性噪声污染的信号中的噪声。假定信号s[n]被噪声d[n]所污染,得到了一个含有加性噪声的信号x[n]=s[n]+d[n]。要得到无污染的信号,可用简单的信号平滑即信号的加法实现。例如,采用三点(可选,以信号特点来定)平滑来实现。y[n]=(x[n-1]+x[n]+x[n+1])/3 由此可以理解平滑滤波的处理方法。

Matlab程序

r=65;

d=0.8*(rand(r,1)-0.5);m=0:r-1;s=2*m.*(0.9.^m);x=s+d';subplot(2,1,1);

plot(m,d','r-',m,s,'g--',m,x,'b-.');xlabel('n');ylabel('振幅');

legend('d[n]','s[n]','x[n]');x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(2,1,2);

plot(m,y(2:r+1),'r-',m,s,'g--');legand('y[n]','s[n]');xlabel('n');ylabel('振幅');

(2)调制信号的产生

利用MATLAB语言编程实现信号的调制。调制信号是工程应用中常用的一类信号,调制信号的产生可以通过序列的乘法运算得到。例如,用低频调制信号xL[n]=cos(wln)来调制高频正弦信号xH[n]=cos(wHn),就可得到振幅调制信号y[n]。

y[n]=A(1+m*xL[n])xH[n]=A(1+mcos(wLn))cos(wHn)其中m称为调制指数,用来确保(1+m*xL[n])在所有可能的n的情况下m都是正数。以上式进行编程即可实现调制的目的。

Matlab程序

Fm=10;Fc=100;Fs=500;k=0:199;t=k/Fs;x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);X=fft(x,256);Y=fft(y,256);subplot(2,2,1);plot(x);

xlabel('t(s)');ylabel('x');title('原信号');

subplot(2,2,2);plot(X);

plot([-128:127],fftshift(abs(X)));xlabel('w');ylabel('X(jw)');title('原信号频谱');

subplot(2,2,3);plot(y);xlabel('t(s)');ylabel('y');title('调制信号');subplot(2,2,4);

plot(Y);plot([-128:127],fftshift(abs(Y)));xlabel('w');ylabel('Y(jw)');title('调制信号频谱');

(3)卷积的计算

用MATLAB语言编程可实现信号卷积运算。卷积是数字信号处理中非常重要的一个运算,用卷积可以计算一个序列通过离散系统后的响应信息。如可以编程实现9点对7点(序列长度可以自己设定)的序列卷积运算。

Matlab程序

x=[0 0.5 1 1.5 0];nx=0:4;h=[1 1 1 0 0];nh=0:4;[y,ny]=conv_m(x,nx,h,nh);subplot(2,2,1);stem(nx,x);title('序列x');xlabel('n');ylabel('x(n)');subplot(2,2,2);stem(nh,h);title('序列h');xlabel('n');ylabel('h(n)');subplot(2,2,3);stem(ny,y);title('');xlabel('n');ylabel('y(n)');

conv_m函数程序

function[y,ny]=conv_m(x,nx,h,nh)%信号处理的卷积程序

%[y,ny]=conv_m(x,nx,h,nh)%y=卷积结果

%ny=y的基底(support);%nx=x的基底;%h=基底nh上的第二个信号 %nh=h的基底 nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);end

(4)序列的离散傅里叶变换,Z变换及信号频域特性  用MATLAB语言编程实现信号离散傅里叶的正反变换。Matlab程序

xn=[1,1,1,1];N=4;k=dft(xn,N)' Xk=[4,0,0,0];N=4;Xk=idft(xn,N)' xn=[1,1,1,1];N=length(xn);n=0:N-1;k=0:N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k);x=(Xk*exp(j*2*pi/N).^(n'*k))/N;subplot(1,2,2);stem(k,abs(Xk));grid on;title('|X(k)|');axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);subplot(1,2,1);stem(n,xn);grid;title('x(n)');axis([-1,N,1.1*min(xn),1.1*max(xn)]);

dft函数程序

function[Xk]=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;end

idft函数程序

function[Xk]=idft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;

end

 用MATLAB语言编程实现信号的圆周移位、圆周卷积、验证DFT的圆周时移、圆周卷积性质和圆周卷积与线性卷积的关系。

圆周移位 Matlab程序

n=[0:10];M=6;N=11;x=10*0.8.^n;y=cirshift(x,M,N);subplot(2,1,1);stem(n,x);

title('Ô-ÐòÁв¨ÐÎ');xlabel('n');ylabel('x(n)');subplot(2,1,2);stem(n,y);

title('Ô²ÖÜÒÆλÐòÁв¨ÐÎ');xlabel('n');ylabel('y(n)');

sigmod函数程序

function[ m ]= sigmod(n,N);m=rem(n,N);m=m+N;m=rem(m,N);end

cirshift函数程序

function[ y ]= cirshift(x,m,N);if length(x)>N

error('N must be greater than length(x)');end

x=[x zeros(1,N-length(x))];n=[0:N-1];n=sigmod(n-m,N);y=x(n+1);end

圆周卷积

Matlab程序

x1=[1 2 2];n1=[0:2];x2=[1 2 3 4];n2=[0:3];disp('N=5');n3=[0:4];N=5;y=circonvt(x1,x2,N)subplot(3,1,1);stem(n1,x1);title('x1');xlabel('n1');ylabel('x1(n)');subplot(3,1,2);stem(n2,x2);title('x2');xlabel('n2');ylabel('x2(n)');subplot(3,1,3);stem(n3,y);title('圆周卷积');xlabel('n3');ylabel('y(n)');

circonvt函数程序

function [y] = circonvt(x1,x2,N);if length(x1)>N error('Length(x1)is not great than N');end if length(x2)>N error('Length(x2)is not great than N');end x1=[x1, zeros(1,N-length(x1))];x2=[x2, zeros(1,N-length(x2))];m=[0:N-1];x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=1:N;H(n,:)=cirshift(x2,n-1,N);end y=x1*H';end

 验证一个实周期序列奇偶部分的DFT与此序列本身的DFT之间的关系。Matlab程序

function[xe,xo,m]=evenodd(x,n)if any(imag(x)~=0)error end

m=-fliplr(n);m1=min([m,n]);m2=max([m,n]);m=m1:m2;

nm=n(1)-m(1);n1=1:length(n);x1=zeros(1,length(m));x1(n1+nm)=x;x=x1;xe=0.5*(x+fliplr(x));xo=0.5*(x-fliplr(x));n=[0:10];x=stepseq(0,0,10)-stepseq(10,0,10);[xe,xo,m]=evenodd(x,n);

subplot(2,2,2);stem(m,xe);title('偶部');xlabel('n');ylabel('xe(n)');subplot(2,2,4);stem(m,xo);title('奇部');xlabel('n');ylabel('xo(n)');

 用MATLAB语言编程实现信号的Z变换及其反变换、Z变换的零极点分布。

a=[1 1-6];b=[0 5 0];

[r,p,k]=residuez(b,a);subplot(121);zplane(b,a);

title('零极点分布图');[H,w]=freqz(b,a,100);magH=abs(H);phaH=angle(H);figure(2)

subplot(222);plot(w/pi,magH);grid xlabel('frequency in pi units');title('magnitude part');

subplot(223),plot(w/pi,phaH/pi);grid xlabel('frequency in pi units');title('Angle part');

五、实验扩展思考

① 编程产生方波信号序列和锯齿波信号序列。

x=[0:1/256:8];y1=square(pi*x);

subplot(2,1,1);plot(x,y1);axis([0,8,-2,2]);title('方波');xlabel('x');ylabel('y1');grid on;y2=sawtooth(pi*x);subplot(2,1,2);plot(x,y2);title('锯齿波');xlabel('x');ylabel('y2');grid on;

② 实验中所产生的正弦序列的频率是多少?怎样才能改变它?分别是哪些参数控制该序列的相位、振幅和周期?

正弦序x[n=]Asin(w0n+Φ)频率f=w0/2pi通过改变w0改变频率f;Φ控制序列相位,A控制序列振幅,w0控制序列周期。

③ 编程实现序列长度为N的L点的正反离散傅里叶变换,并分析讨论所得出的结果,其中L≧N,如L=8,N=6。

function[Xk]=dft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;

function[Xk]=idft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;

④ 由实验说明离散傅里叶变换的对称关系,说明序列的时域和频域的关联特性。

离散傅里叶变换具有共轭对称性

(1)复共轭序列的DFT。设x*(n)为x(n)的复共轭序列,长度为N,X(k)=DFT[x(n)],则DFT[x*(n)]=X*(N-K),0<=k<=N-1(2)DFT的共轭对称性。

定义圆周共轭对称分量xep(n)和圆周共轭反对称分量xop(n)xep(n)=1/2[x(n)+x*(N-n)],xop(n)=1/2[x(n)-x*(N-n)]则 DFT[xep(n)]=Re[X(k)], DFT[xop(n)]=jIm[X(k)] 序列的时域和频域的关联特性(1)时域卷积对应频域相乘

设f[x(n)]=X(ejw),f[h(n)]=H(ejw),y(n)=x(n)*h(n), 则Y(e^jw)=1/2pi[X(e^jw)*H(e^jw)](2)时域相乘对应于1/2*pi的频域卷积 设f[x(n)]=X(e^jw),f[h(n)]=H(e^jw),y(n)=x(n)h(n),则Y(e^jw)=1/2*pi[X(e^jw)*H(e^jw)] 

六、实验报告要求

1、实验中的主要结论:圆周卷积与线性卷积之间的关系。

设圆周卷积y(n)=∑x1(m)x2(n-m)LRL(n),线性卷积y1(n)=x1(n)*x2(n),则y(n)=[∑y1(n+rL)]Rl(n),及当L>=N1+N2-1,y(n)=y1(n)。

2、通过编写程序,让我更熟练的使用MATLAB,能更好的理解书本所学的内容

3、心得体会:在使用matlab软件定义函数时,必须对函数的含义理解清楚,要不然很容易定义函数出现错误。其次要对matlab自带函数的含义用法理解清楚。这次实验我最大的收获就是对离散时间序列的理论基础的概念有了一个很好的复习和更深刻的认识。遇到最大的问题就是定义函数时考虑不够全面。但是我相信随着后面实验的进行,我能将matlab这个工具与课本的理论基础知识完美的结合起来。

第四篇:实验8 网络协议分析和实现(综合设计性)

实验八网络协议分析和实现

1.实验目的掌握网络应用程序的开发方法;

掌握Client/ Server结构软件的设计与开发方法

掌握Socket机制的工作原理

2.实验前的准备

阅读教材关于TCP/IP协议和Socket的相关内容;

阅读WinSock编程指南;

阅读本实验所附内容;

熟悉VC++6.0开发工具

3.实验内容

学生可以从以下实验题目中任选一个来完成也可以自己命题。

(1)用掌握的语言和所学网络知识设计实现FTP的客户端;

(2)用掌握的语言和所学网络知识设计实现收发邮件的客户端;

(3)使用Winsock实现点对点通信;

(4)对网络实验中的停止等待协议或滑动窗口协议的程序提出改进并实现;

(5)自己设计网络要求条件,对其进行详细需求分析(包括对条件的分析和实现,网络设备的选择,网络拓扑的选择,经费的考虑,以及网络的可容性、可扩充性等),并划出拓扑图。

(6)按照所给综合设计实验1或是综合设计实验2的要求分别配置构建符合要求的网络,并给相应的配置说明。

4.实验要求

学生可以根据所选题目大小,独立或两人一组完成实验。要求实验报告中应包括所选实验题目和一些必备内容。

若选择具体网络协议的实现,则应该能够在理解所选择的网络协议的基础上,对其进行分析和实现,要求给出分析和实现的过程,以及必要的程序代码。程序语言不限,但不能直接调用模块实现,必须通过调用socket或底层网络接口实现。

若是选择组网实现,则必须对网络做出详细的需求分析,包括对条件的分析和实现、网络设备的选择、网络拓扑的选择、经费的考虑、网络的可容性、可扩充性、安全性等等,并划出网络拓扑图。

若选择综合设计实验1或综合设计实验2,需给出相应的网络拓扑和配置说明。

下载00讲稿实验二 用MATLAB实现线性系统的时域分析word格式文档
下载00讲稿实验二 用MATLAB实现线性系统的时域分析.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐