信号与系统实验报告
时间:2021-10-01 来源:博通范文网 本文已影响 人
中南大学
信号与系统试验报告
姓名:
学号:
专业班级:自动化
实验一
基本信号得生成
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 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 无意中搜出这么喜欢的文章。 MATLAB的基本知识 MATLAB是矩阵实验室(Matrix Laboratory)的简称,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 一、基本功能: 1.将数值分析、矩阵计算、科学数据可视化以及线性、非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 2.MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 3.MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,是成为一个强大的数学软件。MATLAB具有很多功能丰富的应用工具箱(Signal Proceing Toolbox——信号处理工具箱),为用户提供了大量方便实用的处理工具。函数可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。 二、优势: 1.友好的工作平台编程环境 2.简单易用的程序语言 3.强大的科学计算机数据处理能力 4.出色的图形处理功能 5.应用广泛的模块集合工具箱 6.实用的程序接口和发布平台 7.应用软件开发(包括用户界面) 三、常用函数: exp:自然对数的底数e i 或j:基本虚数单位 pi:圆周率p(= 3.1415926...) abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):下取整,即舍去正小数至最近整数 ceil(x):上取整,即加入正小数至最近整数 sign(x):符号函数(Signum function)。 rem(x,y):求x除以y的余数 pow2(x):2的指数 MATLAB常用信号处理函数 sin(t):正弦函数 cos(t):余弦函数 tan(t):正切函数 atan(t):反正切函数 sinc(t): sinc(t)=sin(πt)/(πt);抽样函数Sa(t)=sinc(t/pi) rectpuls(t,width):幅度为1,宽度为width的以t=0为对称轴的矩形波 tripuls(t,width):最大幅度为1,宽度为widtht=0的为对称轴的三角波。 MATLAB基本二维绘图函数 plot(x,y): x轴和y轴均为线性刻度(绘制连续信号的波形) stem(x,y):针状图或火柴棒图 (绘制离散信号的波形) subplot:当前窗口分割;subplot(m,n,k)把图形窗口分割为m行n列的m*n个子窗口,当前窗口为第k个。 注解函数 xlabel(\\"Input Value\\"); % x轴注解 ylabel(\\"Function Value\\"); % y轴注解 title(\\"Two Trigonometric Functions\\"); % 图形标题 legend(\\"y = sin(x)\\",\\"y = cos(x)\\"); % 图形注解 四、一维数组/向量生成法 1.逐个元素输入法 x = [2, pi/2, sqrt(3), 3+5i] x = [1 2 3 4 5 6] 输入数组必须用[ ]为输入界限; 数组元素之间必须用逗号或者空格键分隔; 单个元素可以为数值、赋值变量或者表达式。 2.冒号生成法 冒号用于表示向量、带有下标的数组以及用来表示循环。这里冒号表示步长设定。 t = a : inc : b a为数组起点,b为数组终点,inc为步长。 inc可以省略,缺省时默认为1;inc可以为正也可以为负。 3.t=linspace(a,b,num) 4.特殊二维矩阵建立 全1矩阵 ones (a,b) 全0矩阵 zeros (a,b) 随机均匀分布矩阵 rand (a,b),产生[0 1]之间均匀分布的随机数组 五、数组运算(点运算) 数组运算是指无论在数组上施加什么运算,总认定该种运算对被运算数组中的每一个元素平等的实施同样的操作。数组的乘除运算以及转置的运算符号前面的小黑点不能遗漏,否则不按数组运算规则进行。 在MATLAB中,数组运算因为其运算符是在有关算术运算符前面加点,所以又叫点运算。点运算符有.*、./、.\\\\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 代码编写规范: 1.可以在命令窗口(command window)编写(回车即运行),也可以建立新的脚本文件,键入代码,保存文件在MATLAB的子文件夹下;保存之后点击绿色的run按钮运行程序。文件命名时需注意,文件名只能是由纯字母或字母、数字和下划线组成,必须以字母开头,不能出现汉字。 2.每条语句之后以分号结束。 3.注释需以%开头。 4.代码需在英文输入法下进行。 5.clc;%清空命令窗口 close all;%关闭所有图形窗口 clear;% 清除工作空间中的变量 实验一 连续信号的表示 1.指数信号f(t)Aeat,程序如下: A=1;a=-0.4; t = 0:0.01:10; f=A*exp(a*t); plot(t,f); 2.正弦信号: f(t)A*sin0w(t或者)f(t)A*cos(w0t),A=1,w02,/4程序如下: A=1; w0=2*pi; phi = pi/4;%初相位 t = 0:0.001:8; f1=A*sin(w0*t+phi); f2=A*cos(w0*t+phi); subplot(2,1,1); plot(t,f1); xlabel(\\"t\\"); % x轴注解 ylabel(\\"f1\\"); % y轴注解 title(\\"sin 函数\\"); % 图形标题 legend(\\"f1 = sin(t)\\");%图形注解 subplot(2,1,2); plot(t,f2); 练习: 1、画出以下信号波形: 1) f(t)(t),t5~5,画出f(t)、tf(t) clc; clear all; t=-5:0.1:5;%或者t=linspace(-5, 5,101); ut=[zeros(1,50),ones(1,51)]; f1=ut; f2=t.*ut; plot(t,f1,t,f2); 2) f(t)cos(10t),t=0~2画出f(t) 3) f(t)10et5e2t,t0~5,画出f(t)
范文就是独乐乐不如众乐乐。