信号与系统MATL实验及代码.docx
- 文档编号:24541911
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:34
- 大小:1.15MB
信号与系统MATL实验及代码.docx
《信号与系统MATL实验及代码.docx》由会员分享,可在线阅读,更多相关《信号与系统MATL实验及代码.docx(34页珍藏版)》请在冰豆网上搜索。
信号与系统MATL实验及代码
实验一、MATLAB编程基础及典型实例
一、实验目的
(1)熟悉MATLAB软件平台的使用;
(2)熟悉MATLAB编程方法及常用语句;
(3)掌握MATLAB的可视化绘图技术;
(4)结合《信号与系统》的特点,编程实现常用信号及其运算。
示例一:
在两个信号进行加、减、相乘运算时,参于运算的两个向量要有相同的维数,并且它们的时间变量范围要相同,即要对齐。
编制一个函数型m文件,实现这个功能。
function[f1_new,f2_new,n]=duiqi(f1,n1,f2,n2)
a=min(min(n1),min(n2));
b=max(max(n1),max(n2));
n=a:
b;
f1_new=zeros(1,length(n));
f2_new=zeros(1,length(n));
tem1=find((n>=min(n1))&(n<=max(n1))==1);f1_new(tem1)=f1;
tem2=find((n>=min(n2))&(n<=max(n2))==1);f2_new(tem2)=f2;
四、实验内容与步骤
−2t
(2)绘制信号x(t)=esin(
t=0:
0.1:
30;
2
3
t)的曲线,t的范围在0~30s,取样时间间隔为0.1s。
y=exp(-sqrt
(2)*t).*sin(2*t/3);
plot(t,y);
(3)在n=[-10:
10]范围产生离散序列:
x(n)
=
⎧2n,−3
⎨
≤
n
≤
3
并绘图。
⎩0,Other
n=-10:
1:
10;
z1=((n+3)>=0);
z2=((n-3)>=0);
x=2*n.*(z1-z2);
stem(n,x);
(4)编程实现如下图所示的波形。
t=-2:
0.001:
3;
f1=((t>=-1)&(t<=1));
f2=((t>=-1)&(t<=2));
f=f1+f2;
plot(t,f);
axis([-2,3,0,3]);
(5)设序列f1(k)={0,1,2,3,4,5},f2(k)={6,5,4,3,2,1,0}。
↓↓
k=0k=0
利用duiqi.m函数,求add_f(k)=f1(k)-f2(k),pro_f(k)=f1(k)×f2(k),并以子图形式画出f1(k)、
f2(k)、add_f(k)、pro_f(k)。
f1=0:
5;stem(n1,f1);subplot(2,2,3)
f2=6:
-1:
0;xlabel('n1');stem(n,add_f);
n1=-1:
4;ylabel('f1');xlabel('n');
n2=-5:
1;gridon;ylabel('add-f(k)');
[f1_new,f2_new,n]=duiqisubplot(2,2,2)gridon;
(f1,n1,f2,n2);stem(n2,f2);subplot(2,2,4)
add_f=f1_new+f2_new;xlabel('n2');stem(n,pro_f);
pro_f=f1_new.*f2_new;ylabel('f2');xlabel('n');
subplot(2,2,1)gridon;ylabel('pro-f(k)');gridon;
五、实验报告要求
(1)再调用某一函数文件时,该文件中除了输入、输出变量外的其它变量在调用函数结束后是否还存在?
这些变量是全局还是局部变量?
答:
不存在,是局部变量。
(2)设n=-10:
0.2:
20,你可以通过那些方法查看向量n的维数?
经过关系运算y=(n>=3)以后,y的维数是多少?
y又等于什么?
答:
Length()函数或Workspace中的变量类型。
维度不变,
(3)通过MATLAB的帮助系统,学习fliplr函数的功能和使用方法。
在此基础上,写出
n
能够产生如下图形的程序,其中x(n)=2,−4≤n≤4。
n=-4:
4;
x1=2.^n;
figure
(1);
stem(n,x1);
x2=fliplr(x1);
figure
(2);
stem(n,x2);
实验二、连续时间系统的时域分析
一、实验目的
(1)深刻理解卷积运算,掌握离散线性卷积、连续线性卷积的计算方法;
(2)加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;(3)掌握给定连续系统的冲击响应和阶跃响应。
实例2:
利用conv函数,编制一个函数文件dconv,其输出为两个序列卷积后的新序列以及与新序列对应的时间变量
function[f,k]=dconv(f1,f2,k1,k2)
f=conv(f1,f2);
k_start=k1
(1)+k2
(1);
k_end=length(f1)+length(f2)-2;
k=k_start:
(k_start+k_end);
实例2:
在dconv函数和(*)的基础上,编制一个函数文件cconv,利用离散卷积和来近似计算连续卷积积分。
function[f,k]=cconv(f1,f2,k1,k2,td)
f=td*conv(f1,f2);
k_start=k1
(1)+k2
(1);
k_end=length(f1)+length(f2)-2;
k=k_start:
td:
(k_start+k_end*td);
四、实验内容与步骤
(2)
(1)
(1)
(1)已知系统微分方程为y(t)+2y(t)+2y(t)=f(t),f(t)=ε(t)。
计算系统的
零状态响应y(t)、冲击响应δ(t)和阶跃响应g(t),并画出相应的图形。
t=0:
0.01:
10;y3=step(sys,t);
f=ones(1001,1);subplot(1,3,1)
a=[1,2,2];plot(t,y1);
b=[1,0];subplot(1,3,2)
sys=tf(b,a);plot(t,y2);
y1=lsim(sys,f,t);subplot(1,3,3)
y2=impulse(sys,t);plot(t,y3);
(2)用MATLAB计算如下连续列的卷积和,绘出它们的时域波形。
f1(k)=
⎧1,k=1
⎪⎪2,k=0⎧1,−2≤k≤2
⎨f2(k)=⎨
⎪1,k=1
⎩0,其它
t=-6:
6;
z1=stepseq(-6,6,-1);
z2=stepseq(-6,6,2);
z3=delta(-6,6,0);
f1=z1-z2+z3;
z4=stepseq(-6,6,-2);
z5=stepseq(-6,6,3);
f2=z4-z5;
[y,k]=dconv(f1,f2,t,t);
stem(k,y);axis([-6,6,0,5])
⎩0,
其它
(3)编程实现如下所示的两个波形;并利用cconv函数计算这两个信号的卷积、画出卷积后的波形。
td=0.01;
t=-5:
td:
5;
z1=((t+1)>=0);
z2=((t-1)>=0);
y1=2*(z1-z2);
z3=((t+2)>=0);
z4=((t-2)>=0);
y2=z3-z4;
[y,k]=cconv(y1,y2,t,t,td);
plot(k,y)
axis([-10,10,0,5]);
五、实验报告要求
(1)在“实验内容与步骤”
(1),零状态响应和阶跃响应是否相同?
为什么?
答:
相同,因为零状态响应和阶跃响应在t<0时都没有输入。
(2)两序列进行卷积后得到的新序列,说明新序列在时域长度、时域区间上与与原来两序列的关系。
答:
新序列的长度为原两个序列长度之和。
区间为原两个序列的区间首尾相加。
实验三、连续时间系统的频域分析
一、实验目的
(1)理解周期信号的傅里叶分解,掌握傅里叶系数的计算方法;
(2)深刻理解和掌握非周期信号的傅里叶变换及其计算方法;
(3)熟悉傅里叶变换的性质,并能应用其性质实现信号的幅度调制;
(4)理解连续时间系统的频域分析原理和方法,掌握连续系统的频率响应求解方法,并画出相应的幅频、相频响应曲线。
四、实验内容及步骤
(1)周期性三角波如下图所示,计算其傅里叶级数系数,演示其有限项级数逼近并绘图。
T=2;w=2*pi/T;
a0=quadl(@singftr,-1,1)*2/T;
N=10;an=zeros(1,N);bn=zeros(1,N);
fork=1:
N
an(k)=quadl(@ftrcos,-1,1,[],[],k,w)*2/T;
bn(k)=quadl(@ftrsin,-1,1,[],[],k,w)*2/T;
end;
n=1:
1:
N;
figure
(1);
subplot(1,2,1);stem(n,an,'-o');gridon;
subplot(1,2,2);stem(n,bn,'-o');gridon;
t=-3:
0.01:
3;
x=pulstran(t+0.5,-3:
2:
3,'tripuls',1,1);
figure
(2);subplot(6,2,1);
plot(t,x);
axis([-3,3,-1,2]);gridon;
subplot(6,2,2);plot(t,a0/2);gridon;
wave=a0/2;
fork=1:
10
wave=wave+an(k)*cos(k*w*t)+bn(k)*sin(k*w*t);
subplot(6,2,k+2);plot(t,wave);gridon;
end
2
(2)计算如下所示的信号(cos(t
π
R=0.005;
t=-2:
R:
2;
f=cos(pi*t/2);
%f=(abs(t)<=1);
))的傅里叶变换,并验证尺度变换和时移变换性质。
subplot(2,1,1);plot(t,sf);
xlabel('t');ylabel('sf(t)');gridon;
subplot(2,1,2);plot(w,SFudu);
xlabel('w');ylabel('SF9jw)');gridon;
w1=40;N=1000;k=-N:
N;w=k*w1/N;
F=f*exp(-j*t'*w)*R;
Fudu=real(F);
figure
(1);
subplot(2,1,1);plot(t,f);
xlabel('t');ylabel('f(t)');gridon;
subplot(2,1,2);plot(w,Fudu);
xlabel('w');ylabel('F(jw)');gridon;on;
sf=cos(pi*t/4);
w1=40;N=1000;k=-N:
N;w=k*w1/N;SF=sf*exp(-j*t'*w)*R;
SFudu=real(SF);
figure
(2);
mf=f.*cos(10*pi*t);
figure(3);
subplot(3,1,1);plot(t,cos(10*pi*t));ylabel('y(t)=cos(10*pi*t)');gridon;subplot(3,1,2);plot(t,mf);
ylabel('f1(t)=f(t)*cos(10*pi*t)');grid
MF=mf*exp(-j*t'*w)*R;
MFudu=real(MF);
subplot(3,1,3);plot(w,MFudu);
xlabel('w');ylabel('MF(jw)');gridon;
(3)设信号f(t)为中心为0,范围从-1到1,最大幅值为1的三角波,载波是频率为10Hz
的余弦信号cos(20πt),用MATLAB实现调幅信号,并观察信号和调幅信号频谱。
R=0.005;
t=-2:
R:
2;
z1=((t+1)>=0);
z2=((t-1)>=0);
g=z1-z2;
f=t.*g;
%f=(abs(t)<=1);
w1=40;N=1000;k=-N:
N;w=k*w1/N;F=f*exp(-j*t'*w)*R;
Fudu=real(F);on;
figure
(1);
subplot(2,1,1);plot(t,f);
xlabel('t');ylabel('f(t)');gridon;
subplot(2,1,2);plot(w,Fudu);
xlabel('w');ylabel('F(jw)');gridon;
mf=f.*cos(10*pi*t);
figure
(2);
subplot(3,1,1);plot(t,cos(10*pi*t));ylabel('y(t)=cos(10*pi*t)');gridon;subplot(3,1,2);plot(t,mf);
ylabel('f1(t)=f(t)*cos(10*pi*t)');grid
MF=mf*exp(-j*t'*w)*R;
MFudu=real(MF);
subplot(3,1,3);plot(w,MFudu);
xlabel('w');ylabel('MF(jw)');gridon;
(4)求下列微分方程所描述系统频率响应并画出幅频、相频响应曲线:
y'(t)+3y'(t)+2y(t)=f'(t)
b=[10];a=[132];w=linspace(0,5,200);
H=freqs(b,a,w);
figure
(1);
subplot(2,1,1);
plot(w,abs(H));
xlabel('\omega');ylabel('|H(j\omega)|');
gridon;
subplot(2,1,2);
plot(w,angle(H));
xlabel('\omega');ylabel('\phi');gridon;
五、实验报告要求
(1)在“实验内容与步骤”
(1)中,采用三角函数和指数形式的傅里叶分解有何不同,
它们之间的关系是什么?
采用不同项数的分解形式对原始函数进行逼近,效果有何不同?
为
什么?
答:
采用三角函数和指数形式的傅里叶分解时每一项前的系数不同。
采用不同项数的分解形式时,项数越大,级数与原始函数的逼近程度越好。
(2)综合考虑“实验内容与步骤”
(2)和(3),比较傅里叶变换时移和平移的不同效
果。
答:
时域右移信号在频域中所有频率“分量”相应落后相位ωt0,而其幅度保持不变。
频域右移ω0,时域中信号
f(t)乘以因子e
jtω0
。
实验四、连续系统的复频域分析
一、实验目的
(1)深刻理解和掌握拉普拉斯变换的运算方法及其性质;
(2)熟练掌握利用部分分式展开的方法求解拉普拉斯逆变换,并能利用MATLAB实现;(3)理解复频域系统函数H(s)的意义,并能熟练画出其频谱;
(4)利用复频域系统函数H(s)的零、极点分布对连续时间系统进行复频域分析。
四、实验内容与步骤
5
(1)求函数F(s
)=
s
num=[5];
den=[1144];
32
+s+4s+4
的拉式逆变换。
[r,p,k]=residue(num,den)
运行结果:
x=
0.06250.12500.25000.50001.00002.00004.0000
8.000016.0000
r=
-0.5000-0.2500i
-0.5000+0.2500i
1.0000
p=
-0.0000+2.0000i
-0.0000-2.0000i
-1.0000
k=
[]
(2)已知连续系统函数H(s)=
s
点图,并分析系统的稳定性。
num=[10-4];den=[12-321];
zs=roots(num);ps=roots(den);
figure
(1);
2
s−4
332
+2s−3s+2s+1
,试用Matlab画出系统的零极
plot(real(zs),imag(zs),'o',real(ps),imag(ps),'ks','markersize',12);axis([-4,3,-1,1]);gridon;
sys=tf(num,den);
figure
(2);
pzmap(sys);
(3)已知系统函数为H(s)=
|H(jω)|。
num=[1];den=[1221];
sys=tf(num,den);
t=0:
0.01:
10;
h=impulse(sys,t);
figure
(1);
plot(t,h);
xlabel('t(s)');ylabel('h(t)');
[H,w]=freqs(num,den);
figure
(2);
plot(w,abs(H));
s
s+4
2,求出系统的冲击响应h(t)和系统的幅频响应
+3s+2
xlabel('\omega(rad/s)');ylabel('|H(j\omega)|');title('MagenitudeResponse');
五、实验报告要求
(1)利用系统函数采用Matlab进行系统稳定性分析时,所存在的前提条件是什么?
系统函数和频率响应函数之间的关系?
答:
(2)比较连续系统在频域和复频域进行分析时的不同方法和效果。
说明实验内容与步骤中
(2)、(3)、(4)所描述的系统所起的作用。
答:
在频域中用傅里叶变换,而在复频域进行分析时用拉普拉斯变换。
实验五、离散时间系统的时域、Z域分析
一、实验目的
(1)加深对线性时不变离散系统中零状态响应概念的理解,掌握其求解方法;
(2)深刻理解卷积和运算,掌握求离散序列卷积和的计算方法;
(3)掌握求解给定离散系统的单位序列响应和单位阶跃序列响应的方法;
(4)加深理解和掌握离散求序列信号Z变换和逆Z变换的方法;
(5)加深理解和掌握离散系统的系统函数零点、极点分布与系统时域特性、系统稳定性的关系。
四、实验内容与步骤
k
(1)已知系统的差分方程为y[k]=0.7y[k-1]+0.1y[k-2]=7f[k]-2f[k-1],输入为f[k]=(04)uk[]。
计算系统的零状态响应y[k]、单位序列响应h[k]和阶跃响应g[k],并画出相应的图形。
k=0:
10;title('零状态响应');
a=[1-0.70.1];subplot(2,3,2)
b=[7-2];stem(k,h,'g');
f=0.4.^k;gridon;
filter(a,b,f);title('单位取样响应的近似值');
h=impz(b,a,k);subplot(2,3,3)
g=stepz(b,a,length(k));gridon;
figure;stem(k,g,'b');
subplot(2,3,1)title('单位阶跃响应的近似值');
plot(k,f,'r');gridon;
gridon;
k
(2)已知系统的单位序列响应为h[k]=u[k]-u[k-5],输入信号为f[k]=
利用MATLAB计算:
a.y1[k]=h[k]*f[k]
b.y2[k]=h[k]*f[k-2]
画出h[k]、f[k]、y1[k]和y2[k]的波形。
k=0:
4;subplot(2,2,3);
h=[11111];stem(t1,y1);
f=0.5.^k;subplot(2,2,4);
y1=conv(h,f);stem(t2,y2);
t1=0:
length(y1)-1;subplot(2,2,1);
k1=2:
6;stem(k,h);
f2=0.5.^k1;subplot(2,2,2);
y2=conv(h,f2);stem(k1,f);
t2=2:
length(y2)+1;
(05)(u[k]−u[k−5])。
(3)已知因果离散信号的系统函数为H(z)=
z
2
z−2z+4
2
−05z+025
。
利用MATLAB计算系统
函数的零点、极点,在Z平面画出其零点、极点的分布,并分析系统的稳定性;求出系统
函数的单位序列响应和频率响应,并分别画出其波形。
b=[1-24];A=[1-0.50.25];
a=[1-0.50.25];figure;
[z,p,k]=tf2zp(b,a);zplane(B,A);
B=[1-24];
B=[1-24];figure;
A=[1-0.50.25];subplot(2,1,1)
k=0:
40;plot(w/pi,abs(H));
h=impz(B,A,k);xlabel('ang.freq.\Omega(rad/s)');
figure;ylabel('|H(e^j^\Omega)|');
stem(k,h);title('Magnituderesponse');
xlabel('k');subplot(2,1,2)
ylabel('h[k]');plot(w/pi,angle(H));
title('Impulseresponse');xlabel('ang.freq.\Omega(rad/s)');
ylabel('Angle');
[H,w]=freqz(B,A);title('Angleresponse');
五、实验报告要求
(1)在“实验内容及步骤”
(1),其单位序列响应取值不为零的长度应该为多少?
如果将方程的系数0.7和0.1都置为0,其单位序列响应的长度将会如何改变?
(2)在“实验内容及步骤”
(2),比较输出y1[k]和y2[k]的波形,可能得到怎样的结论?
答:
输出y1[k]和y2[k]的波形相同,对应k值不同。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 MATL 实验 代码