信号与系统实验报告0623041013.docx
《信号与系统实验报告0623041013.docx》由会员分享,可在线阅读,更多相关《信号与系统实验报告0623041013.docx(17页珍藏版)》请在冰豆网上搜索。
信号与系统实验报告0623041013
中南大学
信号与系统试验报告
姓名:
学号:
专业班级:
自动化
实验一基本信号的生成
1.实验目的
学会使用MATLA产生各种常见的连续时间信号与离散时间信号;通过MATLAB中的绘图工具对产生的信号进行观察,加深对常用信号的理解;
熟悉MATLAE的基本操作,以及一些基本函数的使用,为以后的实验奠定基础。
2.实验内容
⑴运行以上九个例子程序,掌握一些常用基本信号的特点及其MATLAB现方法;改变有关参数,进一步观察信号波形的变化。
(2)在k<-10:
10]范围内产生并画出以下信号:
a)fi[k]-[k];
b)f2[k]-[k+2];
c)f』k]-[k-4];
d)f4[k]=2、[k+2]-、[k-4]
源程序:
k=-10:
10;f1k=[zeros(1,10),1,zeros(1,10)];
subplot(2,2,1)
stem(k,f1k)
title('f1[k]')f2k=[zeros(1,8),1,zeros(1,12)];
subplot(2,2,2)
stem(k,f2k)
title('f2[k]')
f3k=[zeros(1,14),1,zeros(1,6)];
subplot(2,2,3)
stem(k,f3k)
title('f3[k]')
f4k=2*f2k-f3k;
subplot(2,2,4)
stem(k,f4k)
title('f4[k]')
⑶在k<0:
31]范围内产生并画出以下信号:
a)fi[k]二sin-■}cos于;
b)f2【k]二cos2于;
c)f/k]=sin于cos青
请问这三个信号的基波周期分别是多少?
源程序:
k=0:
31;
f1k=sin(pi/4*k).*cos(pi/4*k);
subplot(3,1,1)
stem(k,f1k)
title('f1[k]')
f2k=(cos(pi/4*k)).A2;
subplot(3,1,2)
stem(k,f2k)
title('f2[k]')
f3k=sin(pi/4*k).*cos(pi/8*k);
subplot(3,1,3)
stem(k,f3k)
title('f3[k]')
其中f1[k]的基波周期是4,f2[k]的基波周期是4,f3[k]的基波周期是16
实验二信号的基本运算
1.实验目的
学会使用MATLA完成信号的一些基本运算;了解复杂信号由基本信号通过尺度变换、翻转、平移、相加、相乘、差分、求和、微分及积分等运算来表达的方法;
进一步熟悉MATLAB的基本操作与编程,掌握其在信号分析中的运用特点与使用方式。
2•实验内容
⑴运行以上三个例题程序,掌握信号基本运算的MATLA实现方法;改变有关参数,考察相应信号运算结果的变化特点与规律。
⑵已知信号f(t)如下图所示:
给定信号f(t)
21,p,„,,p,
11111■
£k
1.8,」
1.6,■
1.4,・
1.2,■
)1-
0.8,・
0.6/-r
0.4-
0.2■・
0III■III
-4-3-2-101234
t
a)用MATLAB编程复现上图;
%作业题2a:
t=-6:
0.001:
6;
ft仁tripuls(t,6,0.5);
subplot(2,1,1)
plot(t,ft1)
title('f(t)')
術
b)画出f(2-2t)的波形;
%b
t=-6:
0.001:
6;
ft仁tripuls(2*(1-t),6,0.5);
%subplot(1,1,1)plot(t,ft1)title('f(2*(1-t)')
c)画出晋的波形;
%c
h=0.001;t=-6:
h:
6;
yt=tripuls(t,6,0.5);
y1=diff(yt)*1/h;
plot(t(1:
length(t)-1),y1)
title('df(t)/dt')
t
d)画出f(.)d.的波形。
-nO
%d
t=-6:
0.1:
6;
forx=1:
length(t)
y2(x)=quad('tripuls(t,6,0.5)',-3,t(x));
end
Plot(t,y2)
title('integraloff(t)')
实验三系统的时域分析
1.实验目的
学习并掌握连续时间系统的零状态响应、冲激响应和阶跃响应的MATLAB
求解方法;
学习并掌握离散时间系统的零状态响应、冲激响应和阶跃响应的MATLAB
求解方法;
进一步深刻理解连续时间系统和离散时间系统的系统函数零极点对系统特性的影响;
学习并掌握卷积的MATLA计算方法。
2.实验内容
⑴运行以上五个例题程序,掌握求解系统响应的MATLA分析方法;改变模型参数,考察系统响应的变化特点与规律。
⑵设离散系统可由下列差分方程表示:
y[k]-y[k-1]+0.9y[k-2]二f[k]
计算k二[-20:
100]时的系统冲激响应。
源程序:
k=-20:
100;
a=[1-10.9];
b=[1];
h=impz(b,a,k);
stem(k,h);
xlabel('Time(sec)')
ylabel('y(t)')
⑶设h[k]=(0.9)ku(k),输入f[k]二u[k]-u[k-10],求系统输出y[k]二f[k]h[k]。
(取k=[-10:
50])
源程序:
k=-10:
50;
uk=[zeros(1,10),ones(1,51)];
u1k=[zeros(1,20),ones(1,41)];
hk=0.9.Ak.*uk;
fk=uk-u1k;
yk=conv(hk,fk);
stem(0:
length(yk)-1,yk);
⑷已知滤波器的传递函数:
输入信号为f(t)=2sin(0.05-tr-(t),-(t)为随机信号。
试绘出滤波器的输出信
号波形。
(取t=[0:
100])
源程序:
R=101;
d=rand(1,R)-0.5;
t=0:
100;
s=2*sin(0.05*pi*t);
f=s+d;
subplot(2,1,1);plot(t,d,'g-.',t,s,'b--',t,f,'r-');xlabel('Timeindext');legend('d[t]','s[t]','f[t]');title('处理前的波形')b=[0.220];a=[1-0.8];y=filter(b,a,f);
subplot(2,1,2);plot(t,s,'b--',t,y,'r-');xlabel('Timeindext');
legend('s[t]','y[t]');
title('滤波器输出波形')
实验四周期信号的频域分析
1.实验目的
掌握周期信号傅立叶级数分解与合成的计算公式
掌握利用MATLAB实现周期信号傅立叶级数分解与综合方法
理解并掌握周期信号频谱特点
2•实验内容
1仿照例程,实现下述周期信号的傅立叶级数分解与合成:
要求:
(a)首先,推导出求解a。
,an,bn的公式,计算出前10次系数;
(b)利用MATLAB求解a。
,,0的值,其中K,0求解前10次系数,并给出
利用这些系数合成的信号波形。
(a)设周期信号f(t)的周期为T1,角频率「1=2二fi二三,且满足狄里赫利条件,则该周
Ti
期信号可以展开成傅立叶级数。
f(t)=a0-a1cos讹b1sin”ta2
(1)三角形式傅立叶级数
cos2tb2sin2t•••ancosntbnsinnt…
QOQO
=a0…二ancos(nH)一;bnsin(n^t)
bn
2T1
Tf(t)sinn^tdt
T1
T|
(2)指数形式傅立叶级数
f(t)=7Fne"11,n=0,_1,_2,_3「nZ±5O
(b)求解a°,an,bn及合成信号波形所用程序:
function[A_sym,B_sym]=CTFShchsym
%采用符号计算求一个周期内连续时间函数f的三角级数展开系数,再用这些
%展开系数合成连续时间函数f.傅立叶级数
%函数的输入输出都是数值量
%Nf=6谐波的阶数
%Nn输出数据的准确位数
%A_sym第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数
%B_sym第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
%tao=1tao/T=0.2
symstnkx
T=4;
tao=T/4;
a=-1.5;
ifnargin<4
Nf=10;
end
ifnargin<5
Nn=32;
endx=time_fun_x(t);
%求出三角函数展开系数A0
%求出三角函数展开系数As
%求出三角函数展开系数Bs
%获取串数组A0所对应的ASC2码数值数组
A0=int(x,t,a,T+a)/T;
As=2/T*int(x*cos(2*pi*n*t/T),t,a,T+a);
Bs=2/T*int(x*sin(2*pi*n*t/T),t,a,T+a);
A_sym
(1)=double(vpa(A0,Nn));
fork=1:
Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn));%获取串数组A所对应的ASC2码数值数组
B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));%获取串数组B所对应的ASC2码数值数组
endifnargout==0
c=A_sym;
disp(c);%输出c为三角级数展开系数:
第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数
d=B_sym;
disp(d);%输出d为三角级数展开系数:
第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
%直流
%基波
%2次谐波
%3次谐波
%4次谐波
%5次谐波
%6次谐波
%7次谐波
%8次谐波
%9次谐波
t=-3*T:
0.01:
3*T;
f0=c
(1);
f1=c
(2).*cos(2*pi*1*t/T)+d
(2).*sin(2*pi*1*t/T);
f2=c(3).*cos(2*pi*2*t/T)+d(3).*sin(2*pi*2*t/T);
f3=c(4).*cos(2*pi*3*t/T)+d(4).*sin(2*pi*3*t/T);
f4=c(5).*cos(2*pi*4*t/T)+d(5).*sin(2*pi*4*t/T);
f5=c(6).*cos(2*pi*5*t/T)+d(6).*sin(2*pi*5*t/T);
f6=c(7).*cos(2*pi*6*t/T)+d(7).*sin(2*pi*6*t/T);
f7=c(8).*cos(2*pi*7*t/T)+d(8).*sin(2*pi*7*t/T);
f8=c(9).*cos(2*pi*8*t/T)+d(9).*sin(2*pi*8*t/T);f9=c(10).*cos(2*pi*9*t/T)+d(10).*sin(2*pi*9*t/T);
f10=c(11).*cos(2*pi*10*t/T)+d(11).*sin(2*pi*10*t/T);%10次谐波f11=f0+f1+f2;%直流+基波+2次谐波f12=f11+f3;%直流+基波+2次谐波+3次谐波f13=f12+f4+f5+f6;%直流+基波+2次谐波+3次谐波+4次谐波+5次谐波+6次谐波f14=f13+f7+f8+f9+f10;%0~10次subplot(2,2,1)plot(t,f0+f1),holdony=time_fun_e(t);%调用连续时间函数-周期矩形脉冲
plot(t,y,'r:
')title('直流+基波')axis([-8,8,-0.5,1.5])subplot(2,2,2)plot(t,f12),holdony=time_fun_e(t);
plot(t,y,'r:
')
title('1-3次谐波+直流')
axis([-8,8,-0.5,1.5])
subplot(2,2,3)
plot(t,f13),holdon
y=time_fun_e(t);
plot(t,y,'r:
')
title('1-6次谐波+直流')
axis([-8,8,-0.5,1.5])
subplot(2,2,4)
plot(t,f14),holdon
y=time_fun_e(t);
plot(t,y,'r:
')
title('1-10次谐波+直流')
axis([-8,8,-0.5,1.5])
holdoff
endfunctiony=time_fun_e(t)
%该函数是CTFShchsym.m的子函它由符号函数和表达式写成a=1.5;
T=4;
h=1;
tao=T/4;
t=-3*T:
0.01:
3*T;
e1=1/2+1/2.*sign(t-0.5+tao/2);e2=1/2+1/2.*sign(t-0.5-tao/2);
y=h.*(e1-e2);%连续时间函数-周期矩形脉冲
functionx=time_fun_x(t)
%该函数是CTFShchsym.m的子函数。
它由符号变量和表达式写成。
h=1;
x1=sym('Heaviside(t)')*h;
x=x1-sym('Heaviside(t-1)')*h;
2、已知周期为T=4的三角波,在第一周期(-2X(t)=1—t,试用MATLAB求该信号的傅立叶级数,并绘制它的频谱图。
将它的频谱与方波的频谱图做比较。
function[A_sym,B_sym]=CTFSshbpsym(T,Nf)
%采用符号计算求[0,T]内时间函数的三角级数展开系数。
%函数的输入输出都是数值量
%Nn输出数据的准确位数
%A_sym第1元素是直流项,其后元素依次是1,2,3...次谐波cos项展开系数
%B_sym第2,3,4,...元素依次是1,2,3...次谐波sin项展开系数
%TT=m*tao,信号周期
%Nf谐波的阶数
%m(m=T/tao)周期与脉冲宽度之比,如m=4,8,16,100等
%tao脉宽:
tao=T/m
symstny
ifnargin<3
Nf=input('pleaseInput所需展开的最高谐波次数:
Nf=');end
T=input('pleaseInput信号的周期T=');
ifnargin<5
Nn=32;endy=time_fun_s(t);A0=2/T*int(y,t,0,T/2);As=2/T*int(y*cos(2*pi*n*t/T),t,0,T/2);Bs=2/T*int(y*sin(2*pi*n*t/T),t,0,T/2);A_sym
(1)=double(vpa(A0,Nn));fork=1:
Nf
A_sym(k+1)=double(vpa(subs(As,n,k),Nn));
B_sym(k+1)=double(vpa(subs(Bs,n,k),Nn));end
ifnargout==0
%对A_sym阵左右对称交换%A_sym的1*k阵扩展为1*(k+1)阵%对扩展后的S1阵左右对称交换回原位置%对B_sym阵左右对称交换%B_sym的1*k阵扩展为1*(k+1)阵%对扩展后的S3阵左右对称交换回原位置
%用三角函数展开系数A、B值合成付里叶指数系数
FnL=fliplr(FnR);
N=Nf*2*pi/T;
k2=-N:
2*pi/T:
N;
Fn=[FnL,FnR(2:
end)];
%subplot(3,3,3)
%x=time_fun_e(t);
%调用连续时间函数-周期矩形脉冲
subplot(2,1,1)
stem(k2,abs(Fn));%画出周期矩形脉冲的频谱(T=M*tao)title('连续时间函数周期三角波脉冲的双边幅度谱')
axis([-80,80,0,0.12])
line([-80,80],[0,0],'color','r')
line([0,0],[0,0.12],'color','r')
endfunctionx=time_fun_e(t)
%该函数是CTFSshbpsym.m的子函数。
它由符号变量和表达式写成。
%t是时间数组
%T是周期duty=tao/T=0.2
T=5;
t=-2*T:
0.01:
2*T;
tao=T/5;
x=rectpuls(t,tao);%产生一个宽度tao=1的矩形脉冲
subplot(2,2,2)
plot(t,x)
holdon
x=rectpuls(t-5,tao);%产生一个宽度tao=1的矩形脉,中心位置在t=5处plot(t,x)holdon
x=rectpuls(t+5,tao);%产生一个宽度tao=1的矩形脉,中心位置在t=-5处
plot(t,x)
title('周期为T=5,脉宽tao=1的矩形脉冲')
axis([-10,10,0,1.2])
functiony=time_fun_s(t)
symst
y=1-abs(t);
x1=sym('Heaviside(t+2)');x=x1-sym('Heaviside(t-2)');
y=y*x;
ezplot(t,y,[-10,10])
grid
连续时间函数周朗三角波脉冲的双边幅度谱