资源描述
个人收集整理 勿做商业用途
《信号与系统仿真实验》实验报告
课程名称
信号与系统
院 别
物理与电子学院
班 级
电子11-1BF
姓 名
唐新军
学 号
14112500121
任课教师
曾业战
2013年6 月22 日
实验一
信号的产生与时域运算
一、 实验目的
1。 掌握用matlab软件产生基本信号的方法。
2.应用matlab软件实现信号的加、减、乘、反褶、移位、尺度变换及卷积运算.
二、实验原理
(一)产生信号波形的方法
利用Matlab软件的信号处理工具箱(Signal Processing Toolbox)中的专用函数产生信号并
绘出波形。
a.产生正弦波
t=0:0。01:3*pi;
y=sin(2*t);
plot(t,y)
b.产生叠加随机噪声的正弦波
t=0:0.01:3*pi;
y=10*sin(2*t);
s=y+randn(size(t));
plot(t,s)
c。 产生周期方波
t=0:0.01:1;
y=square(4*pi*t);
plot(t,y)
1
d。 产生周期锯齿波
t=(0:0。001:2。5);
y=sawtooth(2*pi*30*t);
plot(t,y),axis([0 0。2 —1 1])
0。5
0
-0。5
-1
0
0。05
0.1
0.15
0.2
Since.产生SincSinc函数
x=linspace(-5,5);
y=sinc(x);
plot(x,y)
1
0.5
0
2
f.产生指数函数波形
x=linspace(0,1,100);
(或x=0:0.01:1;)
y=exp(—x);
plot(x,y)
(二)信号的运算
1.加(减)、乘运算
要求二个信号序列长度相同。例
t=0:0.01:2;
f1=exp(-3*t);
f2=0.2*sin(4*pi*t);
f3=f1+f2;
f4=f1.*f2;
subplot(2,2,1);plot(t,f1);title('f1(t)’);
subplot(2,2,2);plot(t,f2);title(’f2(t)’);
subplot(2,2,3);plot(t,f3);title(’f1+f2’);
subplot(2,2,4);plot(t,f4);title(’f1*f2’);
.2. 信号的反褶、移位、尺度变换。
由f(t)到f(-at+b)(a>0)步骤:
f(t)→f(t + b)→f(at + b)→f(−at + b)⎯⎯⎯
例:已知f(t)=sin(t)/t,试通过反褶、移位、尺度变换由 f(t)的波形得到f(-2t+3) 的波形.
syms t;
f=sym('sin(t)/t');
f1=subs(f,t,t+3);
%定义符号函数f(t)=sin(t)/t
%对f进行移位
f2=subs(f1,t,2*t); %对f1进行尺度变换
f3=subs(f2,t,-t);%对f2进行反褶
subplot(2,2,1);ezplot(f,[—8,8]);grid on;
% ezplot是符号函数绘图命令
subplot(2,2,2);ezplot(f1,[—8,8]);grid on;
subplot(2,2,3);ezplot(f2,[-8,8]);grid on;
subplot(2,2,4);ezplot(f3,[-8,8]);grid on;
(注:也可用一条指令:subs(f,t,-2*t+3)实
现f(t)到f(—2t+3)的变换)
3
(三) 卷积运算)
Y=conv(x,h)
实现x,h二个序列的卷积,假定都是从n=0开始。Y序列的长度为x,h序列的长度之和再减1.
例1: 二个方波信号的卷积.
y1=[ones(1,20),zeros(1,20)];
y2=[ones(1,10),zeros(1,20)];
y=conv(y1,y2);
n1=1:length(y1);
n2=1:length(y2);
L=length(y)
subplot(3,1,1);plot(n1,y1);axis([1,L,0,2]);
subplot(3,1,2);plot(n2,y2);axis([1,L,0,2]);
n=1:L;
subplot(3,1,3);plot(n,y);axis([1,L,0,20]);
例2:二个指数信号的卷积.
t=0:0.01:1;
y1=exp(—6*t);
y2=exp(—3*t);
y=conv(y1,y2);
l1=length(y1)
l2=length(y2)
l=length(y)
subplot(3,1,1);plot(t,y1);
subplot(3,1,2);plot(t,y2);
t1=0:0。01:2;
subplot(3,1,3);plot(t1,y);
三、实验内容
1. 自选二个简单的信号,进行加、乘、卷积运算。
2. 自选一个简单的信号进行反褶、平移、尺度变换运算 .
四、实验要求
1.预习实验原理;
2.对实验内容编写程序(M文件),上机运行;
3.绘出运算或变换后信号的波形。
4
实验二(综合性实验)
线性连续时间系统的分析
一、实验目的
1。掌握用matlab分析系统时间响应的方法
2。掌握用matlab分析系统频率响应的方法
3.掌握系统零、极点分布与系统稳定性关系
二、实验原理
1。 系统函数H(s)
系统函数:系统零状态响应的拉氏变换与激励的拉氏变换之比.
H(s)=R(s)/E(s)
在matlab中可采用多种方法描述系统 ,本文采用传递函数(系统函数)描述法. 在matlab
中, 传递函数描述法是通过传递函 数分子和分母关于s降幂排列的多项式系数来表示的.例
如,某系统传递函数如下
num=[1,1]
(1)
则可用如下二个向量num和den来表示:
den=[1,1。3,0.8]
2. 用matlab分析系统时间响应
1)脉冲响应
y=impulse(num,den,T)
T:为等间隔的时间向量,指明要计算响应的时间点。
2)阶跃响应
y=setp(num,den,T)
T同上。
3)对任意输入的响应
y=lsim(num,den,U,T)
U:任意输入信号. T同上.
例:对式(1)系统,分别求脉冲响应、阶跃响应及对输入u(t)=sin(t)的响应.
num=[1,1];
den=[1,1.3,0.8];
T=0:0。1:3;
y1=impulse(num,den,T);
y2=step(num,den,T);
U=sin(T);
y3=lsim(num,den,U,T);
5
subplot(2,2,1);plot(T,y1);title(’脉冲响应')
subplot(2,2,2);plot(T,y2);title('阶跃响应')
subplot(2,2,3);plot(T,y3);title(’输入为u=sint的响应')
3.用matlab分析系统频率响应特性
频响特性: 系统在正弦激励下稳态响应随信号频率变化的特性.
H ( jω ) = H (s)
s = jω
= H ( j ω ) e jϕ ( ω )
|H(jω)|:幅频响应特性。
ϕ(ω):相频响应特性(或相移特性).
Matlab 求系统频响特性函数freqs的调用格式:
h=freqs(num,den,ω)
ω:为等间隔的角频率向量,指明要计算响应的频率点。
例:求式(1)系统的频响特性.
num=[1,1];
den=[1,1。3,0.8];
W=0:0.1:100;
h=freqs(num,den,W);
subplot(1,2,1);plot(W,abs(h));title(’幅频特性’)
axis([0,20,0,1.5]);
set(gca,’xtick’,[0,10,20]);set(gca,'ytick’,[0,1/sqrt(2),1.25]);grid on;
subplot(1,2,2);plot(W,angle(h));title('相频特性’)
axis([0,20,-pi/2,0。2]);
set(gca,’xtick’,[0,10,20]);set(gca,'ytick’,[—pi/2,—pi/4,0]);grid on;
6
4。系统零、极点分布与系统稳定性关系
系统函数H(s)集中表现了系统的性能,研究H(s)在S平面中极点分布的位置,可很方面地
判断系统稳定性.
1) 稳定系统: H(s)全部极点落于S左半平面(不包括虚轴),则可以满足
lim [h(t )] = 0
t →∞
系统是稳定的.
2)不稳定系统: H(s)极点落于S右半平面,或在虚轴上具有二阶以上极点 ,则在足够长时
间后,h(t)仍继续增长, 系统是不稳定的。
3)临界稳定系统: H(s)极点落于S平面虚轴上,且只有一阶,则在足够长时间后,h(t)趋于
一个非零数值或形成一个等幅振荡.
系统函数H(s)的零、极点可用matlab的多项式求根函数roots()求得.
极点:p=roots(den)
零点:z=roots(num)
根据p和z用plot()命令即可画出系统零、极点分布图 ,进而分析判断系统稳定性。
例: 系统函数H(s)如下,画出系统零、极点分布图, 判断该系统稳定性.
num=[1,0,—4];
den=[1,2,-3,2,1];
p=roots(den);
z=roots(num);
plot(real(p),imag(p),'*’);hold on;
( 2)
plot(real(z),imag(z),'o');grid on
% 极点: p = —3.1300、 0.7247 + 0。6890i 、0.7247 - 0.6890i 、-0。3195
% 零点: z = 2。0000、 —2.0000
7
由系统零、极点分布图可知,该系统有一极点位于s右半平面,故系统是不稳定的.
三、实验内容
设①p1=—2,p2=—30; ②p1=—2,p2=3
1.针对极点参数①②, 画出系统零、极点分布图, 判断该系统稳定性。
2.针对极点参数①②,绘出系统的脉冲响应曲线,并观察t→∞时, 脉冲响应变化趋势。
3。针对极点参数①, 绘出系统的频响曲线。
四、实验要求
1.预习实验原理;
2. 对实验内容编写程序(M文件),上机运行;
3.绘出实验内容的各相应曲线或图,回答相应问题。
8
实验三
离散时间信号与系统
一、实验目的
1。掌握用matlab软件产生离散时间信号的方法;
2.进一步理解离散时间信号常见运算的方法;
3。掌握求离散时间系统冲激响应的方法.
4。掌握Simulink是面向框图的仿真软件。
二、实验原理
(一)离散时间信号的产生与运算
1。离散时间信号的产生
(1)单位抽样序列
⎧1, n = n 0
δ (n — n 0 ) = ⎨
⎩0, n ≠ n0
先定义delta函数,并保存。
function[x,n]=delta(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
然后执行下面程序。(以δ(n—3)为例)
[x,n]=delta(3,—1,10);
stem(n,x);
(2)单位阶跃序列
⎧1, n ≥ n0
u (n — n 0 ) = ⎨
⎩0, n 〈 n0
先定义step—seq函数,并保存.
function[x,n]=step—seq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)〉=0];
然后执行下面程序.(以u(n—3)为例)
[x,n]=step-seq (3,—1,10);
stem(n,x);
(3)矩形序列
⎧1, ( 0 ≤ n ≤ N − 1)
R N ( n) = ⎨
⎩ 0, (n < 0, n ≥ N )
先定义aaa函数,并保存。
function[x,n]=aaa(N,n1,n2)
n=[n1:n2];
x=[(N>n)&(n>=0)];
9
然后执行下面程序。(以R3)为例)
[x,n]=aaa (3,—1,10);
stem(n,x);
(4)单位斜坡序列
⎧n, n ≥ 0
x(n) = ⎨
⎩0, n 〈 0
先定义ramp函数,并保存.
function[x,n]=ramp(n1,n2)
n=[n1:n2];
x=n;
然后执行下面程序
[x,n]=ramp (0,10);
Stem(n,x);
(5)正弦序列
例:X(n)=5sin(0。5πn+ π/4)
n=-pi:0.1:pi;
x=5*sin(0.5*pi*n+pi/4);
stem(n,x)
(6)指数序列
例:X(n)=exp(—0。5n)。
n=—1:0.1:1;
x=5*exp(—0.5*n);
stem(n,x)
(7)任意序列
例:
x=[1,5,-4,2,5,—1,5];
n=1:length(x);
stem(n,x)
2。离散时间信号的运算
(1)二序列相加、乘
例:
x1=[1,5,-4,2,5,-1,5];
x2=[1,2,3,4,5,6,7];
n=1:length(x1);
10
subplot(2,2,1);stem(n,x1);
subplot(2,2,2);stem(n,x2);
subplot(2,2,3);stem(n,x1+x2);
subplot(2,2,4);stem(n,x1.*x2);
(2)二序列卷积
例:
x1=[1,1,1,1,0,0,0];
x2=[0,0,1,1,1,0,0];
Y=conv (x1,x2),
n1=1:length(x1);
n2=1:length(x2);
n=1:length(Y);
subplot(3,1,1);stem(n1,x1);
subplot(3,1,2);stem(n1,x2);
subplot(3,1,3);stem(n,Y);
(3) 演示一个Simulink的简单程序
例:
x=[1,5,—4,2,5,—1,5];
N=length(x);
Y=fft(x,N),
n=1:N;
subplot(2,1,1);stem(n,x1);
subplot(2,1,2);stem(n,abs(Y));
(1)创建一个正弦信号的仿真模型。
步骤如下:
在MATLAB的命令窗口运行simulink命令,或单击工具栏中的图标,就可以打开Simulink模块库浏览器(Simulink Library Browser) 窗口,如图所示.
11
Simulink界面
(2) 单击工具栏上的图标或选择菜单“File”——“New”——“Model”,新建一个名为“untitled”的空白模型窗口。
(3) 在上图的右侧子模块窗口中,单击“Source”子模块库前的“+"(或双击Source),或者直接在左侧模块和工具箱栏单击
Simulink下的Source子模块库,便可看到各种输入源模块。
(4) 用鼠标单击所需要的输入信号源模块“Sine Wave”(正弦信号),将其拖放到的空白模型窗口“untitled",则“Sine Wave"
模块就被添加到untitled窗口;也可以用鼠标选中“Sine Wave"模块,单击鼠标右键,在快捷菜单中选择“add to 'untitled'"
命令,就可以将“Sine Wave”模块添加到untitled窗口,如图所示.
Simulink界面
(5)用同样的方法打开接收模块库“Sinks",选择其中的“Scope"模块(示波器)拖放到“untitled”窗口中。
(6) 在“untitled”窗口中,用鼠标指向“Sine Wave”右侧的输出端,当光标变为十字符时,按住鼠标拖向“Scope”模块的
输入端,松开鼠标按键,就完成了两个模块间的信号线连接,一个简单模型已经建成。如图所示。
(7) 开始仿真,单击“untitled”模型窗口中“开始仿真”图标,或者选择菜单“Simulink"——“Start”,则仿真开始。双
击“Scope”模块出现示波器显示屏,可以看到黄色的正弦波形。如图所示.
Simulink模型窗口
示波器窗口
(8) 保存模型,单击工具栏的图标,将该模型保存为“Ex0701.mdl”文件.
(2)建立二阶系统的仿真模型。
例:
输入信号源使用阶跃信号,系统使用开环传递函数,接受模块使用示波器来构成模型.
(1) 在“Sources”模块库选择“Step"模块,在“Continuous"模块库选择“Transfer Fcn”模块,在“Math Operations”模
块库选择“Sum”模块,在“Sinks”模块库选择“Scope”.
(2) 连接各模块,从信号线引出分支点,构成闭环系统。
Sum参数设置
(3) 设置模块参数,打开“Sum"模块参数设置对话框,如图7.26所示。将“Icon shape”设置为“rectangular”,将“List of signs”
设置为“|+-”,其中“|"表示上面的入口为空.
“Transfer Fcn”模块的参数设置对话框中,将分母多项式“Denominator"设置为“[1 0。6 0]”。
将“Step”模块的参数设置对话框中,将“Step time”修改为0。
(4) 添加信号线文本注释
双击信号线,出现编辑框后,就输入文本.则模型如图7.27所示。
二阶系统模型
(5) 仿真并分析
单击工具栏的“Start simulation”按钮,开始仿真,在示波器上就显示出阶跃响应。
在Simulink模型窗口,选择菜单“Simulation”-—“Simulation parameters…”命令,在“Solver”页将“Stop time"设置为
15,然后单击“Start simulation”按钮,示波器显示的就到15秒结束.
打开示波器的Y坐标设置对话框,将Y坐标的“Y—min”改为0,“Y—max”改为2,将“Title"设置为“二阶系统时域响应”,则示
波器如图所示。
实验一作业1.利用MATLAB产生下列信号并作图.
(1)
t= —1: 0.02: 5;
x=(t>=1);
m=—3*x;
plot(t,m);
axis([—1,5,—4,0]);
(2)
t = 0:0。007:30;
x = exp(-0。1*t);
omega=2/3;
y = sin(omega*t);
z=x.*y %加点表矢量运算
plot(t,z);
(3)
t = -0。1:0.000006:0。1;
x = cos(100*t);
y = cos(2000*t);
z=x+y;
plot(t,z);
(4)
k=-15:0。02:15;
x=(k>=-5&k<=5);
plot(k,x);
axis([—15,15,0,2]);
(5)
k=—20:20;
x=(0。9.^k).*(sin(0。25。*pi。*k)+cos(0.25.*pi。*k));
stem(k,x);
实验二作业1.描述某线性时不变系统的微分方程为:
且f(t)=t2,y(0—)=1,y'(0-)=1;试求系统的单位冲激响应、单位阶跃响应、全响应、零状态响应、零输入响应、自由响应和强迫响应.编写相应MATLAB程序,画出各波形图。
b=[1 2];
a=[1 3 2];
sys=tf(b,a)
t=0:0。02:4;
figure(1)
impulse(sys,t);
title(‘单位冲激响应’)
figure(2)
step(sys,t)
title(‘单位阶跃响应’)
y=dsolve('D2y+3*Dy+2*y=2*t+2*t^2’,’y(0)=1,Dy(0)=1');
y1=dsolve(’D2y+3*Dy+2*y=0’);
y2=dsolve(’D2y+3*Dy+2*y=2*t+2*t^2');
y3=y2-y1;
y4=y—y3;
yzi=dsolve(’D2y+3*Dy+2*y=0',’y(0)=1,Dy(0)=1’);
yzs=dsolve('D2y+3*Dy+2*y=2*t+2*t^2',’y(0)=0,Dy(0)=0’);
t=linspace(0,2,200);
figure(1)
all=subs(y);
plot(t,all)
xlabel('t(s)')
title(’全响应')
figure(2)
y_4=subs(y4);
plot(t,y_4)
xlabel('t(s)')
title(’自由响应')
figure(3)
y_3=subs(y3);
plot(t,y_3)
xlabel('t(s)’)
title(’强迫响应')
figure(4)
yzi_n=subs(yzi);
plot(t,yzi_n)
xlabel(’t(s)’)
title('零输入响应’)
figure(5)
yzs_n=subs(yzs);
plot(t,yzs_n)
xlabel('t(s)')
title('零状态响应')
2.给定一个连续线性时不变系统,描述其输入输出之间关系的微分方程为:
编写MATLAB程序,绘制系统的幅频响应、相频响应、频率响应的实部和频率响应的虚部的波形,确定滤波器的类型。
b = [1];
a = [1 3 2];
[H,w] = freqs(b,a);
Hw = abs(H);
plot(w,Hw)
title(’幅频响应'), xlabel(’频率(rad/sec)')
b = [1];
a = [1 3 2];
[H,w] = freqs(b,a);
phai = angle(H);
plot(w,phai),
title(’相频响应'), xlabel('频率(rad/sec)')
b = [1];
a = [1 3 2];
[H,w] = freqs(b,a);
real= real(H);
plot(w,real)
title('频率响应的实部’) ,xlabel(’频率(rad/sec)')
b = [1];
a = [1 3 2];
[H,w] = freqs(b,a);
imag= imag(H);
plot(w,imag)
title(‘频率响应的虚部'), xlabel(’频率(rad/sec)’)
该系统是低通滤波器
3.已知系统函数为,试用MATLAB画出系统的零极点分布图,冲激响应波形、阶跃响应波形、幅频响应曲线和相频响应曲线,并判断系统的稳定性.
b=[0 1 —2 0.8];
a=[1 2 2 1];
sys=tf(b,a)
t=0:0。02:4;
figure(1)
impulse(sys,t);
title(‘单位冲激响应’)
figure(2)
step(sys,t)
title(‘单位阶跃响应’)
a=[1 2 2 1];
b=[0 1 -2 0。8];
freqs(b,a)
a=[1 2 2 1];
b=[0 1 -2 0.8];
p=roots(a);
q=roots(b);
hold on
plot(real(p),imag(p),'x');
plot(real(q),imag(q),’o');
title('H(s)的零极点图');
展开阅读全文