信号与系统实验报告
中南大学
信号与系统试验报告
姓名:
学号:
专业班级:自动化
实验一
基本信号得生成
1. 实验目得
学会使用 MATLAB 产生各种常见得连续时间信号与离散时间信号; 通过MATLAB 中得绘图工具对产生得信号进行观察,加深对常用信号得理解; 熟悉 MATLAB 得基本操作,以及一些基本函数得使用,为以后得实验奠定基础。
2 2 。
实验内容
⑴ 运行以上九个例子程序,掌握一些常用基本信号得特点及其MATLAB 实现方法;改变有关参数,进一步观察信号波形得变化. ⑵ 在
范围内产生并画出以下信号: a)
; b) ; c) ; d) . 源程序: k= — 10 0 :1 1 0; ;
f1k=[ze r os(1 , 10 ), , 1 ,zer os(1 1 ,1 1 0)]; ;
subplot (2 2 , 2,1)
stem( k, , f 1k )
title( ' f1[k ] ’ )
f2k=[zer os s (1 ,8), 1,z z er r os s (1 1 , 12 )]; ;
su b plot(2 , 2,2 )
s te m(k k , f2k )
titl e ("f2 [k] ’ )
f3k = [zeros (1 ,14 ), , 1, zer os s (1 1 ,6 6 )]; ;
su bplot t (2 2 ,2 2 , 3)
st e m( k,f 3 k)
ti t le("f3[k]" )
f 4k= 2*f2k k- - f3 k;
su bpl ot (2 ,2 2 , 4)
s s t em ( k,f4k)
t t i tle( 'f 4[k]")
⑶ 在 范围内产生并画出以下信号: a) ; b) ; c) 。
请问这三个信号得基波周期分别就是多少? 源程序: k= = 0:
31 ;
f1 1 k= = sin(pi /4* k) ) 、* cos (pi /4*k ); ;
subp lo t (3,1, 1) )
st em(k ,f1 1 k) )
t itle( ' f1[k ]" " )
f2 k=(cos(pi/4*k)) 、^ ^ 2; ;
subp l ot(3, 1 ,2)
st t em m (k, f2 k) )
ti i tl e( 'f2 [k ]" " )
f3 k =s in n ( pi /4*k)、*cos s (p i/8 *k k ); ;
sub p lot (3,1 1 ,3)
st em m (k ,f3k )
tit le e ( ’f3 [k k ] ’ )
其中f1[k]得基波周期就是4, f2[k]得基波周期就是4, f3[k]得基波周期就是 16. 实验 二
信号得基本运算
1 1 。
实验目得
学会使用MATLAB完成信号得一些基本运算; 了解复杂信号由基本信号通过尺度变换、翻转、平移、相加、相乘、差分、求与、微分及积分等运算来表达得方法; 进一步熟悉 MATLAB 得基本操作与编程,掌握其在信号分析中得运用特点与使用方式. 2。
实验内容
⑴ 运行以上三个例题程序,掌握信号基本运算得MATLAB实现方法;改变有关参数,考察相应信号运算结果得变化特点与规律。
⑵ 已知信号如下图所示:
a) 用 MATLAB 编程复现上图; %作业题2
a: t=-6:0 、001 :6; ft1=t rip uls(t, 6,0 、5); sub plot( 2,1,1 )
plot(t,ft1) t tit le( ’f(t) ’)
b) 画出得波形; %b t= -6:0 、00 1:6; f ft 1= tripuls(2 *(1 —t),6 ,0 、5) ; %s ubp lot(1,1,1 )
pl ot(t ,ft 1) t it le( ’f (2*(1- t)") -4 -3 -2 -1 0 1 2 3 400.20.40.60.811.21.41.61.82tf(t)给 定 信 号 f(t)
c) 画出得波形;
%c h=0 、00 1;t= —6: h:6; yt= tri pu ls( t,6,0 、5) ; y 1= diff(yt )*1/h; plot(t( 1:lengt h(t) —1 ),y1 )
tit le( ’df(t )/ dt ’)
d) 画出得波形。
%d t=—6:0、1:6; for x=1:length(t)
y2(x)=quad(’tripuls(t,6,0、5)’,-3,t(x));
end plot(t,y2)
title("integral of f(t)")
实验 三
系统得时域分析
1 1 。
实验目得
学习并掌握连续时间系统得零状态响应、冲激响应与阶跃响应得 MATLAB求解方法; 学习并掌握离散时间系统得零状态响应、冲激响应与阶跃响应得 MATLAB 求解方法; 进一步深刻理解连续时间系统与离散时间系统得系统函数零极点对系统特性得影响; 学习并掌握卷积得 MATLAB 计算方法。
2. 实验内容
⑴ 运行以上五个例题程序,掌握求解系统响应得 MATLAB分析方法;改变模型参数,考察系统响应得变化特点与规律。
⑵ 设离散系统可由下列差分方程表示:
计算时得系统冲激响应。
源程序:
k= — 20:100 ;
a= [1 1
- - 1 0、 9] ;
b=[1];
h= i mpz (b b ,a a ,k k ); ;
stem ( k, h); ;
xla b el(’Ti me (sec)’)
y y lab el(’y(t)")
⑶ 设,输入,求系统输出。
(取)
源程序: k=- -1 1 0 :50 ;
u u k= = [z z e ro s( 1,1 0 ), o nes(1, 51) ) ]; ;
u 1k=[ z er o s( 1, 20 ),o o n es( 1, , 41)]; ;
h k=0 、9 9 、 ^k 、 *uk;
fk=u k- - u1k;
yk=co o nv v ( hk,f k) ) ;
stem ( 0:length(yk )- - 1, yk ); ;
⑷ 已知滤波器得传递函数:
输入信号为为随机信号。试绘出滤波器得输出信号波形.(取) 源程序: R=101 ;
d=rand (1 ,R )
—0 0 、5; ;
t=0:100 ;
s=2 * si n (0 、 05*pi*t) ;
f=s +d d ;
su bp lo t (2,1,1);
plot(t ,d ,’ g- - 、',t t , s,’b- - — ",t,f , "r- - ' );
xl l ab b el l (" " Ti i m e in d ex t’ ); ;
legend ( "d [t t ] "," s[ [ t]" " , "f[t ] ’ );
tit t le e (" " 处理前得波形') )
b=[0 、 22 0 ];a=[ 1
-0 0 、 8];
y=fi lt er(b ,a,f) ) ;
su bp p l ot (2 2 , 1,2);
pl ot t (t ,s,"b —- -" " ,t t , y,’r- - ’) ;
xl ab b e l(’ Ti i m e i nd ex t");
leg e nd("s [t t ] ’,’ y [t ]'); ;
title (" " 滤波器输出波形’) )
实验 四
周期信号得频域分析
1. . 实验目得
掌握周期信号傅立叶级数分解与合成得计算公式 掌握利用 MATLAB实现周期信号傅立叶级数分解与综合方法 理解并掌握周期信号频谱特点
2、实验内容 1、仿照例程,实现下述周期信号得傅立叶级数分解与合成:
要求:
(a)首先,推导出求解,,得公式,计算出前 10 次系数;
(b)利用MATLAB 求解,,得值,其中,求解前 10 次系数,并给出利用这些系数合成得信号波形。
(a)设周期信号得周期为,角频率,且满足狄里赫利条件,则该周期信号可以展开成傅立叶级数。
(1)三角形式傅立叶级数
dt t n t fTbdt t n t fTadt t fTat n b t n a at b t a t b t a t b t a a t fTT nTT nTTnnnnn n n n 2211221122101111 02 2 2 2 1 1 1 1 0111111sin ) (2cos ) (2) (1) sin( ) cos(... sin cos ... sin cos sin cos ) (
(2)指数形式傅立叶级数
(b)求解,,及合成信号波形所用程序: function [A_sym,B_sym]=CTFShchsym % 采用符号计算求一个周期内连续时间函数 f 得三角级数展开系数,再用这些 %
展开系数合成连续时间函数f、傅立叶级数 % 量值数是就都出输入输得数函ﻩ%
数阶得波谐 6=fNﻩ% Nn
数位确准得据数出输ﻩ% 数系开展项 soc 波谐次、、、3,2,1是就次依素元后其,项流直是就素元 1 第ﻩmys_Aﻩ% B_sym 第 2,3,4,、、、元素依次就是 1,2,3、、、次谐波 sin项展开系数 %
tao=1
tao/T=0、2 syms t n k x
T=4; tao=T/4; a=-1、5; if nargin<4
Nf=10; end if nargin<5
Nn=32; end
1 -3 -4 5 4 1 O
x=time_fun_x(t); A0=int(x,t,a,T+a)/T;
%求出三角函数展开系数A0 As=2/T*int(x*cos(2*pi*n*t/T),t,a,T+a);
%求出三角函数展开系数 As Bs=2/T*int(x*sin(2*pi*n*t/T),t,a,T+a);
%求出三角函数展开系数 Bs A_sym(1)=double(vpa(A0,Nn));
%获取串数组 A0 所对应得 ASC2码数值数组 for k=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 码数值数组 end
;
if nargout==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 项展开系数
t=—3*T:0、01:3*T;
f 0= c(1);
%直流
f 1 = c ( 2) 、 * co s ( 2* p i* 1 * t /T) + d(2 )、 * s i n(2 * pi* 1 * t /T);
% 基波
f 2= c ( 3 ) 、 * c o s ( 2*pi * 2 * t/T)+d(3 )、 *sin ( 2 * pi * 2* t /T);
% 2 次谐波
f3=c(4)、*cos(2*pi*3*t/T)+d(4)、*sin(2*pi*3*t/T);
% 3次谐波
f4=c(5)、*cos(2*pi*4*t/T)+d(5)、*sin(2*pi*4*t/T);
% 4次谐波
f5=c(6)、*cos(2*pi*5*t/T)+d(6)、*sin(2*pi*5*t/T);
% 5次谐波
f6=c(7)、*cos(2*pi*6*t/T)+d(7)、*sin(2*pi*6*t/T);
% 6 次谐波
f 7=c(8 )、 *cos(2*p i * 7 *t/T )
+d(8 )、 * sin(2 * p i * 7 *t/T);
% 7 次谐波
f8=c(9)、*cos(2*pi*8*t/T)+d(9)、*sin(2*pi*8*t/T);
% 8次谐波
f9 = c (1 0 ) 、 * c o s ( 2 * p i*9 * t /T)+d(10) 、 * s in(2 * p i * 9 *t/T);
% 9 次谐波
f 1 0=c ( 11) 、 *co s ( 2 * pi*10*t/T )
+d(1 1 ) 、 *s i n(2*pi * 1 0 *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),hold on
y=time_fun_e(t);
%调用连续时间函数-周期矩形脉冲
plot(t,y,"r:")
title("直流+基波’)
axis([-8,8,-0、5,1、5])
subplot(2,2,2)
plot(t,f12),hold on
y=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),hold on
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),hold on
y=time_fun_e(t);
plot(t,y,"r:’)
title(’1—10 次谐波+直流")
axis([-8,8,-0、5,1、5])
hold off end function y=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);
%连续时间函数—周期矩形脉冲 function x=time_fun_x(t)
% 该函数就是 CTFShchsym、m得子函数。它由符号变量与表达式写成. h=1;
x1=sym("Heaviside(t)")*h; x=x1-sym(’Heaviside(t-1)’)*h;
2、已知周期为T=4 得三角波,在第一周期(-2<t〈2)内表示成:,试用 MATLAB 求该信号得傅立叶级数,并绘制它得频谱图.将它得频谱与方波得频谱图做比较。
function [A_sym,B_sym]=CTFSshbpsym(T,Nf) % 采用符号计算求[0,T]内时间函数得三角级数展开系数。
%
ﻩ 函数得输入输出都就是数值量 % Nn
输出数据得准确位数 % mys_Aﻩ 第1元素就是直流项,其后元素依次就是1,2,3、、、次谐波 cos项展开系数 % B_sym 数系开展项 nis 波谐次、、、3,2,1 是就次依素元、、、,4,3,2 第ﻩ%
T
T=m*tao,
信号周期 % ﻩ fNﻩ 谐波得阶数 %
m (m=T/tao)周期与脉冲宽度之比,如 m=4,8,16,100等 %
tao
脉宽:tao=T/m
syms t
n
y
if nargin<3
Nf=input(’please Input 所需展开得最高谐波次数:Nf=’); end
T=input(’please Input 信号得周期 T="); if nargin〈5
Nn=32; end y=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)); for k=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 if nargout==0
An=fliplr(A_sym);
%对 A_sym 阵左右对称交换
An(1,k+1)=A_sym(1);
%A_sym 得 1*k 阵扩展为 1*(k+1)阵
An=fliplr(An);
%对扩展后得 S1阵左右对称交换回原位置
Bn=fliplr(B_sym);
%对 B_sym 阵左右对称交换
Bn(1,k+1)=0;
%B_sym得 1*k 阵扩展为1*(k+1)阵
Bn=fliplr(Bn);
%对扩展后得 S3阵左右对称交换回原位置
FnR=An/2—i*Bn/2;
% 用三角函数展开系数 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")
end function x=time_fun_e(t) % 该函数就是CTFSshbpsym、m得子函数。它由符号变量与表达式写成。
% t
组数间时是就ﻩ% T 2、0=T/oat=ytud
期周是就ﻩﻩ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)
hold on x=rectpuls(t—5,tao);
%产生一个宽度tao=1 得矩形脉,中心位置在t=5处 plot(t,x)
hold on x=rectpuls(t+5,tao);
%产生一个宽度tao=1得矩形脉,中心位置在 t=—5处 plot(t,x)
title("周期为 T=5,脉宽 tao=1得矩形脉冲') axis([-10,10,0,1、2]) function y=time_fun_s(t)
syms t y=1—abs(t); x1=sym('Heaviside(t+2)’); x=x1—sym("Heaviside(t-2)’); y=y*x; ezplot(t,y,[—10,10]) grid