信号与系统实验报告jh.docx
- 文档编号:30190992
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:27
- 大小:404.46KB
信号与系统实验报告jh.docx
《信号与系统实验报告jh.docx》由会员分享,可在线阅读,更多相关《信号与系统实验报告jh.docx(27页珍藏版)》请在冰豆网上搜索。
信号与系统实验报告jh
信
号
与
系
统
实
验
报
告
实验报告
一、绘制信号波形:
1.程序代码:
clearall;%清除历史记录
figure;%创建图形窗口
holdon;%当前轴及图形保持而不被刷新,准备接受此后的绘制
subplot(1,2,1);%调用画图位置函数
t=[0:
0.02:
2*pi];%设定横坐标的参数
gridon;%给图形添加网格线
x=sin(t);%给出要绘制的函数
plot(t,x,'g--','linewidth',5);%输出平面线图并设定图形线的颜色和宽度
xlabel('t(seconds)');%给图形的横坐标命名
ylabel('signals');%给图形的纵坐标命名
title('正弦信号');%给图形加一个标题
subplot(1,2,2);
t1=[0:
0.001:
4*pi];
y=cos(t1);%定义要绘制的另一个函数
plot(t1,y,'k-o''linewidth',1);%输出函数图形,并给图形设定颜色和宽度
xlabel('t(seconds)');
ylabel('signals');
title('余弦信号');
holdoff;%使当前图形具备不再被刷新的性质
输出的波形:
2.程序代码:
clearall;%清除历史记录
figure;%创建图形窗口
holdon;%当前轴及图形保持而不被刷新,准备接受此后的绘制
t=[0:
0.02:
2*pi];%设定图形横坐标的参数值
gridon;%给图形加网格线
x=log10(t);%给出要输出的函数图形
plot(t,x,'g--','linewidth',3);%设定输出图形的颜色和宽度
xlabel('t(seconds)');%给图形横坐标加标注
ylabel('signals');%给图形纵坐标加标注
t1=[0:
0.001:
4*pi];%设定另一函数的横坐标的参数值
y=cos(0.5*t1);%给出要输出的另一个函数
plot(t1,y,'r','linewidth',3);%设定输出图形的颜色和宽度
legend('x','y');%图形图例
输出的波形:
二、微分方程的建立与求解
1.在s域描述如下系统
程序代码:
clearall;
a=[1,7,16,12];
b=[1];
sys=tf(b,a)%创建函数传递对象
输出的结果:
小结:
以上程序主要是调用tf函数,创建函数传递对象,提供了一种在s域描述系统函数的一种方法。
2.求微分方程
程序代码:
clearall,closeall,clc;
p=[1,7,16,12];
a=roots(p)%调用roots函数求系统特征方程的根
输出的结果:
小结:
以上程序主要是利用roots函数计算微分方程的齐次解即系统特征方程的根。
3.给定微分方程式,分别求两种情况下方程的特解:
程序代码:
clearall,closeall,clc;
a=[1,2,3];
b=[1,1];
sys=tf(b,a);%调用tf创建函数传递对象
t=[0:
0.1:
10];
e1=t.^2;%输入激励
r1=lsim(sys,e1,t);%用lsim函数仿真在给定信号激励下的输出
e2=exp(t);%另一个输入激励
r2=lsim(sys,e2,t);%用lsim函数仿真在这个信号下的输出
figure;
subplot(1,2,1),holdon,boxon;
set(gca,'FontSize',16);%设置图形对象的属性
set(gca,'YScale','log');
plot(t,e1,'k-',t,e2,'k-.','linewidth',3);
legend('e_1','e_2');%图形图例
xlabel('time');
ylabel('input');
subplot(1,2,2),holdon,boxon;
set(gca,'FontSize',16);
set(gca,'YScale','log');
plot(t,r1,'k-',t,r2,'k-.','linewidth',3);
legend('r_1','r_2');
xlabel('time');
ylabel('output');
输出的结果:
小结:
这个程序主要是利用lsim函数进行对函数特解即系统在给定信号激励下的输出的仿真。
三、冲激响应和阶跃响应的确定:
程序代码:
clearall,closeall,clc;
a=[1,7,10];
b=[1,6,4];
sys=tf(b,a);%调用tf创建函数传递对象
t=[0:
0.01:
3]';
figure;%创建图形窗口
subplot(2,2,1);
step(sys);%调用step函数产生阶跃响应
subplot(2,2,2);
x_step=zeros(size(t));%定义全零数组
x_step(t>0)=1;%定义阶跃函数
x_step(t==0)=0.5;
lsim(sys,x_step,t)%用lsim函数对阶跃响应进行仿真输出图形
subplot(2,2,3);
[h1,t1]=impulse(sys,t);%调用impulse函数产生冲激响应
plot(t1,h1,'k');
title('ImpulseResponse');
xlabel('Time(sec)');
ylabel('Amplitude');
subplot(2,2,4);
x_delta=zeros(size(t));%定义全零数组
x_delta(t==0)=100;%在零点设定一个较大的值(冲激函数)
[y1,t]=lsim(sys,x_delta,t);%调用lsim函数对冲激响应进行仿真
y2=y1-x_delta;%将响应中的冲激函数减去,方便输出
plot(t,y2,'k');
title('ImpulseResponse');
xlabel('Time(sec)');
ylabel('Amplitude')
输出结果:
小结:
这个程序主要是利用impulse函数产生冲激响应和利用step函数产生阶跃响应,并用lsim函数对输出的响应进行仿真。
四、S域分析
1.求函数的拉氏逆变换
程序代码:
clearall,closeall,clc;
symss;%创建多个符号对象
f=ilaplace(10*(s+2)*(s+5)/s/(s+1)/(s+3))%调用ilaplace函数求拉氏逆变换
输出结果:
小结:
这个程序主要是提供了一种求函数拉氏逆变换的方法,即调用ilaplace函数。
2.求函数的拉氏逆变换:
程序代码:
clearall,closeall,clc;
b=[1,5,9,7];%F(s)分子多项式系数
a1=[1,1];%F(s)分母多项式第一个分式的系数
a2=[1,2];%F(s)分母多项式第二个分式的系数
a=conv(a1,a2);%计算分母多项式的系数
[r,p,k]=residue(b,a)%部分分式展开,得系数r,极点p和自由项k
输出结果:
3.求函数的拉氏逆变换
程序代码:
clearall,closeall,clc;
b=[1,0,3];
a1=[1,2,5];
a2=[1,2];
a=conv(a1,a2);
[r,p,k]=residue(b,a)
输出结果:
4.求函数的拉氏逆变换
程序代码:
clearall,closeall,clc;
b=[1,-2];
a1=[1,0];
a2=[1,1];
a=conv(conv(a1,a2),conv(a2,a2));
[r,p,k]=residue(b,a)
输出结果:
小结:
这三个程序提供了求拉氏逆变换的另一种方法,即调用residue函数将F(s)部分分式展开,得系数r,极点p和自由项k,从而间接求得拉氏逆变换。
程序中还用到了计算多项式系数的函数conv。
5.已知系统传递函数和输入信号,求输出信号。
程序代码:
clearall,closeall,clc;
sys=tf(10,[1,1]);%传递函数对象
t=[0:
0.01:
10]';
e=sin(3*t);
i=lsim(sys,e,t);%输出信号仿真
figure,boxon,holdon;
plot(t,e,'r-.',t,i,'g-');
set(gca,'Fontsize',16);%gca获得当前轴句柄
legend('e(t)','i(t)');%图形图例
xlabel('Time(sec)');
title(‘输出信号’)
输出结果:
小结:
这个程序主要是提供了一种已知系统传递函数和输入信号求输出信号的方法,主要是利用tf和lsim函数。
练习题1:
1.对系统函数H1(s)=(4s+5)/(s*s+5*s+6),分别用residue计算冲激响应理论值,再用lsim仿真得到冲激响应,比较是否相同。
程序代码:
clearall;closeall;clc;
a=[1,5,6];
b=[4,5];
sys=tf(b,a);%利用tf函数表示H(s)
subplot(2,2,1);
step(sys);
t=[0:
0.01:
3];
[r,p,k]=residue(b,a);
subplot(2,2,2);
x_delta=zeros(size(t));%定义全零数组
x_delta(t==0)=100;%在零点设定一个较大的值(冲激函数)
[y1,t]=lsim(sys,x_delta,t);%调用lsim函数对冲激响应进行仿真
y2=y1-x_delta;%将响应中的冲激函数减去,方便输出
plot(t,y2,'k');
title('ImpulseResponse');
xlabel('Time(sec)');
ylabel('Amplitude')
输出结果:
2.求电路中的I(t)
程序代码:
clc;
clearall;
closeall;
t=[0:
0.01:
2*pi];
symsst;%定义符号s,t
F=laplace(cos(6*t));%求激励的拉氏变换
I=ilaplace(F/(0.1*s+0.1));%求得I(t)
F
I
输出结果:
五、频域分析:
系统响应曲线的绘制
程序代码:
clearall,closeall,clc;
omega0=1;%定义w0=1
b=[1,0];%传递函数分子多项式
fortheta=pi/2:
pi/20:
pi%二阶谐振a变化
alpha=omega0*-cos(theta);%二阶谐振a变化
a=[1,2*alpha,omega0^2];%传递函数分母多项式
figure
(1);
subplot(2,1,1);
pzmap(b,a);%绘制零极点图
subplot(2,1,2);
impulse(b,a);%调用impulse函数绘制冲激响应
pause(0.1);%暂停0.1s
figure
(2);
freqs(b,a);%绘制幅频、相频特性图
pause(0.2);%暂停0.2s,迫使绘图的发生
end
输出结果:
小结:
这个程序主要是调用pzmap函数绘制零极点图,调用freqs函数绘制幅频、相频特性图。
六、差分方程的求解:
1.求差分方程的完全解
程序代码:
clearall,closeall,clc;
a=[1,-1,0.24];
b=[1,-1];
n=[0:
20]';
x=n.^2;
wi=[0,1];%初始状态
[ywf]=filter(b,a,x,wi);%得到输出序列
figure,boxon,holdon;
stem(n,x,'r:
');%调用stem函数绘制二维杆图
stem(n,y,'k-');
xlabel('Samples');
legend('x(n)','y(n)');%图形图例i
holdoff;
输出结果:
小结:
这个程序主要是利用filter函数求得差分方程的完全解,并调用stem函数绘制二维杆图。
2.已知系统的差分方程,求系统的单位样值响应:
程序代码:
clearall,closeall,clc;
a=[1,-0.5,0.6];
b=[1,0,-0.3];
n=[0:
20]';
[hi,t]=impz(b,a,n);%调用impz函数求h(n)
x=(n==0);%定义一个单位样值序列
hf=filter(b,a,x);%调用filter函数求h(n)
figure;
subplot(1,2,1),holdon,boxon;
stem(n,hi,'k-');%调用stem函数绘制二维杆图
set(gca,'YScale','linear','FontSize',16);
xlabel('n');
ylabel('h_i(n)');
subplot(1,2,2),holdon,boxon;
stem(n,hf,'k-');
set(gca,'YScale','linear','FontSize',16);
xlabel('n');
ylabel('h_f(n)');
输出结果:
小结:
这个程序提供了两种求系统单位样值响应的方法,分别是调用impz函数和filter函数。
练习题2:
1.已知某系统的差分方程,求其冲激响应,并判断该系统是否稳定。
程序代码:
clearall;
closeall;
clc;
a=[1,0.5,-0.2,-0.1];
b=[1,-0.3];
n=[0:
20]';
[hi,t]=impz(b,a,n);%用impz函数求h(n)
x=(n==0);%单位冲激
hf=filter(b,a,x);%调用filter函数求h(n)
figure;
subplot(1,2,1),holdon,boxon;
stem(n,hi,'k-');
set(gca,'YScale','linear','FontSize',20);
xlabel('n');
ylabel('h_i(n)');
subplot(1,2,2),holdon,boxon;
stem(n,hf,'k-');
set(gca,'YScale','linear','FontSize',20);
xlabel('n');
ylabel('h_f(n)');
g=roots(a)%求系统函数极点的值
输出结果:
由以上输出结果分析知,系统函数的极点都在单位圆内,所以系统是稳定的。
2.已知激励求题1的输出
程序代码:
clearall;
closeall;
clc;
a=[1,0.5,-0.2,-0.1];
b=[1,-0.3];
n=[0:
20]';
x=0.5.^n;
[hi,t]=impz(b,a,n);%调用impz函数求h(n)
yc=conv(hi,x);%函数hi和函数x求卷积,得冲激响应
stem(n,yc(1:
21));%绘制二维杆图
xlabel('n','FontSize',18);
ylabel('y(n)','FontSize',18);
输出结果:
七、卷积和
已知某系统的单位样值响应和激励信号,求响应
程序代码:
clearall,closeall,clc;
a=0.8;
N=6;;%激励长度
n=[0:
20]';
h=(a.^n).*(n>=0);%单位样值响应
x=(n>=0&n yc=conv(h,x);%调用conv函数计算卷积 yf1=filter(h,1,x);%X(n)作激励 yf2=filter(x,1,h);%X(n)作激励 figure; data=[h,x,yc(1: 21),yf1,yf2]; labels={'h(n)';'x(n)';'y_c(n)';'y_{f1}(n)';'y_{f2}(n)'}; fork=1: 5 subplot(5,1,k),holdon,boxon; stem(n,data(: k),'k-'); set(gca,'fontsize',12);%调用gca函数获得当前轴句柄 ylabel(labels{k}); end xlabel('n'); 输出结果: 小结: 这个程序主要是调用conv函数,计算卷积和,求得响应。 八、z变换和逆z变换 1.z变换 程序代码: clearall closeall clc symsn;%创建多个符号对象 x1=(1/2)^n;%序列x1 X1=ztrans(x1)%调用ztrans函数计算z变换 x2=n*(n-1)/2;%序列x2 X2=ztrans(x2) X2s=simplify(X2)%调用simplify函数,符号计算中进行简化操作 输出结果: 小结: 这个程序主要是调用ztrans函数计算z变换,并且调用simplify函数对结果进行化简。 2.逆z变换 程序代码: clearall closeall clc symsz;%创建多个符号对象 X=z^2/(z^2-1.5*z+0.5);%定义变换式X x=iztrans(X)%调用iztrans函数计算逆z变换 小结: 这个程序主要是利用iztrans函数计算逆z变换。 九、离散系统z域分析 用z变换解差分方程 程序代码: clearall closeall clc symsnabz;%定义符号n,a,b,z x=a^n; X=ztrans(x);%调用ztrans函数求激励X的z变换 H=1/(1-b*z^(-1));%由差分方程写出系统函数H Y=H*X;%求卷积 y1=iztrans(Y);%调用iztrans函数计算逆Z变换 y=simplify(y1)%调用simplify函数,符号计算中进行简化操作 输出结果: 小结: 这个程序主要是给出已知离散系统的差分方程、激励和初始条件,求响应的步骤: 先调用ztrans函数求得已知激励的z域函数X,然后由差分方程直接写出系统函数H,进而求得函数X和函数H的卷积Y,最后调用iztrans函数求得响应。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 实验 报告 jh