信号与系统及MATLAB实现
信号与系统matlab实验及答案
产生离散衰减正弦序列()π0.8sin 4n x n n ⎛⎫= ⎪⎝⎭, 010n ≤≤,并画出其波形图。
n=0:10;x=sin(pi/4*n).*0.8.^n;stem(n,x);xlabel( 'n' );ylabel( 'x(n)' );用MATLAB 生成信号()0sinc at t -, a 和0t 都是实数,410t -<<,画波形图。
观察并分析a 和0t 的变化对波形的影响。
t=linspace(-4,7); a=1;t0=2;y=sinc(a*t-t0); plot(t,y);t=linspace(-4,7); a=2;t0=2;y=sinc(a*t-t0); plot(t,y);t=linspace(-4,7); a=1;t0=2;y=sinc(a*t-t0); plot(t,y);三组对比可得a 越大最大值越小,t0越大图像对称轴越往右移某频率为f 的正弦波可表示为()()cos 2πa x t ft =,对其进行等间隔抽样,得到的离散样值序列可表示为()()a t nT x n x t ==,其中T 称为抽样间隔,代表相邻样值间的时间间隔,1s f T=表示抽样频率,即单位时间内抽取样值的个数。
抽样频率取40 Hz s f =,信号频率f 分别取5Hz, 10Hz, 20Hz 和30Hz 。
请在同一张图中同时画出连续信号()a x t t 和序列()x n nT 的波形图,并观察和对比分析样值序列的变化。
可能用到的函数为plot, stem, hold on 。
fs = 40;t = 0 : 1/fs : 1 ;% ƵÂÊ·Ö±ðΪ5Hz,10Hz,20Hz,30Hz f1=5;xa = cos(2*pi*f1*t) ; subplot(1, 2, 1) ;plot(t, xa) ;axis([0, max(t), min(xa), max(xa)]) ;xlabel('t(s)') ;ylabel('Xa(t)') ;line([0, max(t)],[0,0]) ; subplot(1, 2, 2) ;stem(t, xa, '.') ;line([0, max(t)], [0, 0]) ;axis([0, max(t), min(xa), max(xa)]) ;xlabel('n') ;ylabel('X(n)') ;频率越高,图像更加密集。
信号与系统 MATLAB综合实验
信号与系统MATLAB综合实验一、实验目的:1、学习MATLAB语言的编程方法及熟悉MATLAB指令。
2、掌握连续时间信号的卷积运算方式,分析建立信号波形间的联系。
3、通过使用MATLAB函数研究线性时不变离散时间系统的时域特性,以加深对线性时不变离散时间系统的时不变性的理解。
二、实验仪器1、计算机2、MATLAB 软件三、实验原理一个离散时间系统是将输入序列变换成输出序列的一种运算。
若以T[•]表示这种运算,则一个离散时间系统可由图1-1来表示,即→∙→(1-1)x n T y n()[]()图1-1 离散时间系统离散时间系统中最重要的、最常用的是“线性时不变系统”。
时不变系统系统的运算关系T[•]在整个运算过程中不随时间(也不随序列的先后)而变化,这种系统称为时不变系统(或称移不变系统)。
这个性质可用以下关系表示:若输入)(ny,则将输入序列移动任意位后,其输出序列除了跟着x的输出为)(n移位外,数值应保持不变,即若)ynm[mT--(m为任意整数)=(xn(()]()][nT=,则)yxn满足以上关系的系统就称为时不变系统。
四、实验内容及结论1、连续时间系统的时域分析已知微分方程: )(2)(3)(2)(3)(t f t f t y t y t y +'=+'+'',1)0(-='-y , 2)0(=-y 若激励信号为)()(t u t f =,利用阶跃响应函数step(sys,t) 求解画波形;利用零状态响应函数lsim 求解画波形;利用卷积函数求解画波形;比较结果。
程序如下:dt=0.001;t1=0:dt:10;f1=-1*exp(-t1)+4*exp(-2*t1);t2=t1;f2=u(t2);f=conv(f1,f2);f=f*dt;t3=0:dt:20;subplot(311)plot(t3,f);xlabel('时间(t)');ylabel('y(t)');title('零状态响应(卷积法)');b=[3 2];a=[1 3 2];sys=tf(b,a);t=0:0.01:10;x=stepfun(t,0);y=lsim(sys,x,t);subplot(312)plot(t,y);xlabel('时间(t)');ylabel('y(t)');title('零状态响应(阶跃函数求法)');sys=tf(b,a);t=0:0.1:10;y=step(sys,t);subplot(313)plot(t,y);xlabel('时间t)');ylabel('y(t)');title('阶跃响应');结论:上述三种方法求得的都是输入为阶跃函数时候的零状态响应,也为阶跃响应,通过图形我们可以看出,利用卷积法求出的零状态和另外两种方法求出的零状态响应图形有一点差别,三者在0到10区间上响应都一致,而利用卷积法求的响应却在下面的区间内发生了变化,我试图修改程序,无论怎么改,发现只要调用了卷积函数,求得的图形就像上述的卷积法求的图形一样,不得解。
信号与系统部分实验matlab代码-供参考
信号与系统第三版112学期部分实验代码目录实验一 常用信号的实现和时域变换部分实验答案 (1)实验二 LTI 时间系统的时域分析 (3)实验四 连续信号与系统的频域分析 (4)实验七 连续时间信号的采样与重构 (15)实验一 常用信号的实现和时域变换部分实验答案(1)⎪⎭⎫ ⎝⎛=-t e t f t 32sin )(1.0t=0:0.1:30; x=exp(-0.1*t).*sin(2/3*t);plot(t,x);axis([0 30 -1 1]); grid;xlabel('Time(sec)'); ylabel('f(t)'); …………………………………………………………………………………………… 对上面的f(t)进行抽样f(n)=f(t)|t=nT =x(nT)就可以得到抽样信号,将上述命令里的时间增量改为1s ,plot(t,x)命令改为 可以得到下图。
4.已知离散序列x(n)如图所示,试用Matlab 编程绘出以下的离散序列波形。
(1)x(-n+3)clc;close all;clear all;n=-3:2x=[3 3 3 3 2 1];[x1,n1]=xlpy(x,n,-3);[x2,n2]=xlfz(x1,n1);subplot(311)stem(n,x,'filled');axis([min(n)-1,max(n)+1,min(x)-0.5,max(x)+0.5]) subplot(312)stem(n1,x1,'filled');axis([min(n1)-1,max(n1)+1,min(x1)-0.5,max(x1)+0.5]) subplot(313)stem(n2,x2,'filled');axis([min(n2)-1,max(n2)+1,min(x2)-0.5,max(x2)+0.5])(2) x(n-3)x(n+2)clc;close all;clear all;n=-3:2x=[ 3 3 3 3 2 1 ];[x1,n1]=xlpy(x,n,3);[x2,n2]=xlpy(x,n,-2);nn=-5:5;x3=[0 0 0 0 0 x1];x4=[x2 zeros(1,5)];x=x3.*x4;subplot(311)stem(nn,x3,'filled');subplot(312)stem(nn,x4,'filled');subplot(313)stem(nn,x,'filled');实验二 LTI 时间系统的时域分析6.对于因果和稳定的LTI 系统,对于下列二阶微分方程确定其单位冲激响应是否是欠阻尼、过阻尼或临界阻尼,画出系统的h(t)和频率响应模的波特图。
信号与线性系统分析(基于MATLAB的方法与实现)第九章
已知周期半波余弦信号与周期全波余弦信号的波形如图所示,用MATLAB编程求出它的傅立叶系数,绘出其直流、一次、二次、三次、四次及五次谐波叠加后的波形图,并将其与原周期信号的时域波形进行比较,观察周期信号的分解与合成过程。
% dm09101% 观察周期方波信号的分解与合成% m:傅里叶级数展开的项数display('Please input the value of m (傅里叶级数展开的项数)'); % 在命令窗口显示提示信息m = input('m = '); % 键盘输入傅里叶级数展开的项数t = -2*pi:0、01:2*pi; % 时域波形的时间范围-2π~2π,采样间隔0、01n = round(length(t)/4); % 根据周期方波信号的周期,计算1/2周期的数据点数f = cos(t)、*(t<(-3*pi/2))+cos(t)、*((t>(-pi/2))&(t<(pi/2)))+cos(t)、*(t>3*pi/2); %构造周期方波信号y = zeros(m+1,max(size(t)));y(m+1,:) = f';figure(1);plot(t/pi,y(m+1,:),'LineWidth',2); %绘制方波信号grid; %在图形中加入栅格axis([-2 2 -0、5 1、5]); %指定图形显示的横坐标范围与纵坐标范围title('周期信号'); %给显示的图形加上标题xlabel('单位pi','Fontsize', 8); %显示横坐标单位x = zeros(size(t));kk = '直流分量';pause;k=1;x = x+1/pi;y(1,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(1,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk));xlabel('单位pi','Fontsize', 8);kk = strcat(kk,'与第',num2str(k));pause;k=k+1;x = x+0、5、*cos(t);y(2,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(2,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk,'次谐波叠加'));xlabel('单位pi','Fontsize', 8);kk = strcat(kk,'、',num2str(k));pause;x = x+2/(3、*pi)、*cos(2、*t);y(3,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(3,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk,'次谐波叠加'));xlabel('单位pi','Fontsize', 8);kk = strcat(kk,'、',num2str(k+2));pause;x = x-2/(15、*pi)、*cos(4、*t);y(4,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(4,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk,'次谐波叠加'));xlabel('单位pi','Fontsize', 8);pause;plot(t/pi,y(1:m+1,:),'LineWidth',3);grid;axis([-2 2 -0、5 1、5]);title('各次谐波叠加波形');xlabel('单位pi','Fontsize', 8);% End-2-1.5-1-0.500.51 1.52-0.500.511.5周期信号单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量和第1次谐波叠加单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量和第1、2次谐波叠加单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量和第1、2、4次谐波叠加单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5各次谐波叠加波形单位pi% dm09201% 绘制周期信号的频谱特性 function CTFS_RP% 以周期矩形脉冲信号为例,计算其频谱特性% Nf:级数分解的谐波次数,由键盘输入% Nn:输出数据的准确位数% a0:直流项系数% an:第1,2,3,、、、次谐波余弦项展开系数% bn:第1,2,3,、、、次谐波正弦项展开系数% tao:周期矩形脉冲信号脉宽,由键盘输入% T:周期矩形脉冲信号周期,由键盘输入display('Please input the value of T, tao and Nf'); %命令窗口提示用户输入参数T = input('T = ');tao = input('tao = ');Nf = input('Nf = ');syms t n k x ; %定义符号变量Nn = 32; %输出数据的位数为32位an = zeros(Nf+1,1); %分配an系数数组bn = zeros(Nf+1,1); %分配bn系数数组x=(heaviside(t+tao/2)-heaviside(t-tao/2))*cos((pi/tao)*t); %构造一个周期的脉冲信号u(t+tao/2)-u(t-tao/2)A0 =2*int(x,t,-T/2,T/2)/T; %求出直流项a0As=2*int(x*cos(2*pi*n*t/T),t,-T/2,T/2)/T; %求出余弦项系数anBs=2*int(x*sin(2*pi*n*t/T),t,-T/2,T/2)/T; %求出正弦项系数bnan(1) = double(vpa(A0,Nn)); %获取参数组A0所对应的ASCII码数值数组for k=1:Nfan(k+1)=double(vpa(subs(As,n,k),Nn)); %获取参数组As所对应的ASCII码数值数组bn(k+1)=double(vpa(subs(Bs,n,k),Nn)); %获取参数组Bs所对应的ASCII码数值数组endcn = sqrt(an、*an+bn、*bn); %计算幅度谱t = -T*2:0、001:T*2;xx =(heaviside(t+tao/2)-heaviside(t-tao/2))、*cos((pi/tao)、*t);for kk=1:2xx=xx+(heaviside(t+tao/2+kk*T)-heaviside(t-tao/2+kk*T))、*cos((pi/tao)、*(t+kk*T))+(heaviside(t+tao/2-kk*T)-heaviside(t-tao/2-kk*T))、*cos((pi/tao)、*(t-kk*T)); %用pulstran函数生成矩形脉冲信号endsubplot(211); %将显示窗口分为3个子窗口,并指向第1个子窗口clear subplot;plot(t,xx); %绘制周期矩形脉冲信号axis([-T*2 T*2 0 1、1]); %指定坐标系范围%title('周期矩形脉冲信号','Fontsize',8); %标注标题s1 = strcat('周期矩形脉冲信号 T=',num2str(T),' Tao=',num2str(tao),'t');xlabel(s1,'Fontsize',8); %x轴标签subplot(212); %指向第2个子窗口k = 0:Nf;stem(k,cn); %绘制幅度谱hold on;plot(k,cn); %绘制幅度谱包络线xlabel('幅度谱 \omega','Fontsize',8);% EndPlease input the value of T, tao and Nf T = 2*pi tao = pi Nf = 30-10-55100.20.40.60.81周期矩形脉冲信号 T=6.2832 T ao=3.1416t幅度谱Please input the value of T, tao and Nf T = 2*pi tao = 2*pi Nf = 30-10-55100.20.40.60.81周期矩形脉冲信号 T=6.2832 T ao=6.2832t幅度谱 ωPlease input the value of T, tao and Nf T = 20*pi tao = pi Nf = 30-100-50501000.20.40.60.81周期矩形脉冲信号 T=62.8319 T ao=3.1416t幅度谱 ωPlease input the value of T, tao and Nf T = 20*pi tao = 4*pi Nf = 30-100-50501000.20.40.60.81周期矩形脉冲信号 T=62.8319 T ao=12.5664t幅度谱Please input the value of T, tao and Nf T = 200*pi tao = pi Nf = 30-1000-500050010000.51周期矩形脉冲信号 T=628.3185 T ao=3.1416t051015202530-3幅度谱。
信号与系统MATLAB常见信号的表示及运算
信号与系统——实验指导实验一 常见信号的表示及运算一、实验目的1.熟悉常见信号的意义、特性及波形2. 掌握用matlab软件产生基本信号的方法.3. 应用matlab软件实现信号的加、减、乘、反褶、移位、尺度变换及卷积运算。
二、实验原理1. 信号的表示方法● 常用信号:连续函数()θω+=t t f sin )(, at Ae t f =)(,ttt Sa sin )(= 离散信号()n n f 0sin )(ω=,njw e n f 0)(=,)()(n u a n f n =● 奇异信号:连续函数:冲激函数)(t δ,阶跃函数)(t u ,斜坡函数)(t R 离散信号:冲激函数)(n δ,阶跃函数)(n u ,斜坡函数)(n R2.卷积连续函数的卷积:⎰∞∞--=τττd t f f t g )()()(21离散函数的卷积:∑∞-∞=-=m m n fm f n g )()()(21三、实验要求1.预习实验原理;2.对实验内容编写程序(M文件),上机运行;3.绘出运算或变换后信号的波形.四.实验内容1. 熟悉matlab 工作环境(1) 运行matlab.exe ,进入matlab 工作环境,如图(1)所示。
图1 matlab工作环境(2) matlab工作环境由Command Window(命令窗口)、Current Direcroty(当前目录)、workspace(工作空间)、command History(历史命令)和Editor(文件编辑器)5部分组成。
其中所有文件的编辑和调试、运行在Editor编辑窗口下进行。
程序的运行也可以在命令窗口进行。
程序调试的信息显示在命令窗口。
(3) 程序文件的产生:点击菜单file下的New下的M_files,进入编辑器界面,如图2。
图2 M文件编辑器(4) 在m文件编辑器下键入程序代码,保存程序文件(命名规则同C语言)。
如果所定义的是函数文件,则要求函数名为M文件名。
信号与系统MATLAB实验-实验二 Matlab中信号的运算
1、运用funtool对f(x)=sin(x)/x分别进行信号的尺度变换f(2x)、f(0.5x)和信号的移位运算f(x+1)、f(x-1)操作以及f(0.5x+1),分别记录相应波形。
f(x)=sin(x)/x f(x+1)f(2x) f(x-1)f(0.5x) f(0.5x+1)2、已知两连续时间信号如下图所示,1)写出信号的函数表达式,并计算f(t)=f1(t)* f2(t)的解析表达式; 2)用MATLAB 求f(t)=f1(t)* f2(t),并绘出f(t)的时域波形图。
(设定取样时间间隔为dt )【实验思考】:通过不断改变dt 的取值并对比所得到的实验效果,观察当取样时间dt 为多大时,函数conv_cs()的计算结果就是连续时间卷积f(t)=f1(t)* f2(t)的较好近似结果?3、已知两连续时间信号如下图所示,1)写出信号的函数表达式,并计算f(t)=f1(t)* f2(t)的解析表达式;2)用MATLAB 求f(t)=f1(t)* f2(t),并绘出f(t)的时域波形图。
(设定取样时间间隔为dt)【实验思考】:不断改变dt的取值并对比实验效果,当取样时间dt为多大时,函数conv_cs()的计算结果就是连续时间卷积f(t)=f1(t)* f2(t)的较好近似结果?clear alldt = 0.01;t1 = -3:dt:3;f1 = 2*(u(t1+1) - u(t1-1));figure;stairs(t1,f1);hold allgrid ont2 = -3:dt:3;f2 = u(t2+2)-u(t2-2);stairs(t2,f2)[fn, tn] = conv_cs(f1, t1, f2, t2, dt);plot(tn, fn)grid onlegend('f1', 'f2', 'f1*f2')。
信号与系统实验MATLAB实验代码
1-1clear all;close all;t=0:0.01:10;A= 1;a=-0.4;ft=A*exp(a*t); plot(t,ft);1-2clear all;close all;t=-3:0.001:3;ft=tripuls(t,4,0.5); plot(t,ft);ft1=tripuls(t,4,1); figure,plot(t,ft1);1-3clear all;close all;t=0:0.001:4;T= 1;Ft=rectpuls(t-2*T,T); plot(t,Ft);1-4clear all;close all;k=-50:50;delta=[zeros(1,50),1,zeros(1,50)]; stem(k,delta);1-5clear all;close all;k=-50:50;uk=[zeros(1,50),ones(1,51)]; stem(k,uk);2-1clear all;close all;t=-3:0.001:3;ft=tripuls(t,4,0.5); subplot(3,1,1);plot(t,ft);title('f(t)');ft1=tripuls((2*t),4,0.5); subplot(3,1,2);plot(t,ft1);title('f(2t)');ft2=tripuls((2-2*t),4,0.5); subplot(3,1,3);plot(t,ft2);title('f(2-2t)');2-2clear all;close all;h=0.001;t=-3:h:3;ft=tripuls(t,4,0.5);subplot(3,1,1);plot(t,ft);title('f(t)');y1=diff(ft)*1/h;subplot(3,1,2);plot(t(1:length(t)-1),y1);title('the differentiation of f(t)');3-1clear all;close all;t=-10:0.01:10;A= 1;a=-0.4;ft=A*exp(a*abs(t)); plot(t,ft);3-2clear all;close all;r=0.02;t=-5:r:5;f1=1/2*exp(-2*t).*stepfun(t,0);f2=1/2*exp(-2*(t-1)).*stepfun(t-1,0); ft1=diff(f1)*1/r;ft2=diff(f2)*1/r;subplot(3,1,1);plot(t,f1);grid on;xlabel('t');ylabel('f(t)');title('f(t)');subplot(3,1,2);plot(t(1:length(t)-1),ft1);title('diff1');subplot(3,1,3);plot(t(1:length(t)-1),ft2);title('diff2');4-1clear all;close all;syms t f;f= fourier(exp((-2)*abs(t))); ezplot(f);4-2clear all;close all;syms t w;f=ifourier(1/(1+(w^2)),t); ezplot(f);a ns1/2*exp(-t)*heaviside(t)+1/2*exp(t)*heaviside(-t) 4-3clear all;close all;r=0.02;t=-5:r:5;N=200;w=2*pi;k=-N:N;w=k*w/N;f1=1/2*exp(-2*t).*stepfun(t,0);F=r*f1*exp(-j*t'*w);F1=abs(F);P1=angle(F);subplot(3,1,1);plot(t,f1);grid on;xlabel('t');ylabel('f(t)');title('f(t)');subplot(3,1,2);plot(w,F1);xlabel('w');grid on;ylabel('F(jw)');subplot(3,1,3);plot(w,P1*180/pi);grid;xlabel('w');ylabel('W');4-4clear all;close all;R=0.02;t=-2:R:2;f=stepfun(t,-1)-stepfun(t,1); f1=f.*exp(-j*5*t);f2=f.*exp(j*5*t);W1=pi*5;N=500;k=-N:N;W=k*W1/N;F1=f1*exp(-j*t'*W)*R;F2=f2*exp(-j*t'*W)*R;F1=real(F1);F2=real(F2); subplot(2,1,1); plot(W,F1); xlabel('w'); ylabel('F1(jw)'); title('频谱F1(jw)'); subplot(2,1,2); plot(W,F2); xlabel('w'); ylabel('F2(jw)'); title('频谱F2(jw)');。
信号与系统利用MATLAB进行信号与系统分析与方程讲解
0.2
0.1
0
-3
-2
-1
0
1
2
3
1
0.9
0.8
0.7
ft=tripuls(t,4,1);
0.6
0.5
0.4
0.3
0.2
信号与系统利用MATLA0.B1 进行信号与系
统分析和方程0讲解
-3
-2
-1
0
1
2
3
一、基本信号的MATLAB表示
% unit impuls sequence
1 0.9
k=-50:50;
0.8
0.7
uk=[zeros(1,50), ones(1,51Fra bibliotek];0.6
0.5
stem(k,uk)
0.4
0.3
0.2
function [f,k]=stepseq(k0,k1,k2) %产生 f[k]=u(k-k0);k1<=k<=k2
0.1
0
-50 -40 -30 -20 -10
0
10 20 30 40 50
axis([-1 3 0 2]);
直接在命令窗口输入以上命令
建一个名字为my_file.M的文件,然后在命令窗口输
入文件名及回车。 信号与系统利用MATLAB进行信号与系统分析和 方程讲解
二、获取帮助
命令窗口输入: help+函数名 例如 help plot
信号与系统利用MATLAB进行信号与系 统分析和方程讲解
一、基本信号的MATLAB表示
%decaying exponential t=0:001:10; A=1; a=-0.4; ft=A*exp(a*t); plot(t,ft)
信号与系统 MATLAB实验报告(可打印修改)
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-20
-15
-10
-5
0
5
10
15
20
对比可知此法做出的图像更加清晰美观。 (2)MATLAB 可以自动地根据曲线数据的范围选择合适的坐标系,从而使得 曲线尽可能清晰地显示出来,一般情况下不必选择坐标系。但是,如果对 MATLAB 自动产生的坐标轴不满意,可以利用 axis 命令对坐标轴进行调整。
title('f=R(t)')
axis([-5 5 -0.5 1.5])
(5) f (t) Sa(t)
ω=1 时:
t=-20:0.01:20 f=sin(t)./t 实现抽样函数
%调用正弦函数sin(),并用sin(t)./t
plot(t,f)
title('f(t)=Sa(t)')
axis([-20,-20,-0.5,1.1])
改进想法:
本题中函数的表示方法都不只一种。如阶跃函数可以借助符号函数来实现
可视化。其程序和结果如下:
t=-5:0.05:5 f=sign(t)
%调用符号函数 sign()
axis([-5,5,-1.1,1.1])
ff=1/2+1/2*f
%运用阶跃函数与符号函数的关系,表示出阶跃函数
ff
plot(t,ff)
实验程序:
(1)
n=-10:20
%设置变量范围,默认步长为1
f=heaviside(n)
x=heaviside(n)-heaviside(n-10) %阶跃函数直接相减
的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。 在 MATLAB 中 t = t1: p: t2 的命令定义时间范围向量,t1 为信号起始时间,t2 为终止时间,p 为时间间隔。
信号与系统MATLAB仿真——信号及其运算
信号与系统MATLAB仿真——信号及其运算1. 知识回顾(1)信号的分类:确定信号与随机信号;周期信号与⾮周期信号;周期信号在时间上必须是⽆始⽆终的f(t)=f(t+T)f[k]=f[k+N]连续时间信号和离散时间信号;连续信号是指在信号的定义域内,除若⼲个第⼀类间断点外,对于任意时刻都由确定的函数值的信号离散信号是指在信号的定义域内,只在某些不连续规定的时刻给出函数值,⽽在其他时刻没有给出函数的信号能量信号、功率信号与⾮功率⾮能量信号;时限与频限信号;物理可实现信号。
(2)信号能量:E=limT→∞∫T−T f2(t)dtP=limT→∞12T∫T−Tf2(t)dtE=limN→∞N∑k=−N|f[k]|2P=limN→∞12N+1N∑k=−N|f[k]|2能量信号:0<E<∞,P=0;功率信号:0<P<∞,E=∞。
(3)冲激函数的性质加权特性(筛选特性):f(t)δ(t−t0)=f(t0)δ(t−t0)取样特性:∫+∞−∞f(t)δ(t−t0)=f(t0)偶函数:f(t)=f(−t)展缩特性:δ(at)=1|a|δ(t)δ(at−t0)=1|a|δ(t−t0a)导数及其特性。
(4)正弦两个频率相同的正弦信号相加,即使其振幅和相位各不相同,但相加后结果仍是原频率的正弦信号;若⼀个正弦信号的频率是另⼀个正弦信号频率的整数倍时,则合成信号是⼀个⾮正弦周期信号,其周期等于基波的周期。
正弦型序列:f[k]=A sin(Ω0k+φ)2π/Ω0是正整数:周期序列,周期为N;2π/Ω0为有理数,2π/Ω0=N/m:周期序列,周期N=m(2π/Ω0);2π/Ω0为⽆理数:⾮周期序列,但包络仍为正弦函数。
(5)抽样信号Sa(t)=sin t t偶函数;Sa(0)=1;t=kπ为其零点;∫+∞−∞Sa(t)dt=π;limt→±∞Sa(t)=0。
(6)信号的分解分解为直流分量与交流分量;奇偶分解;分解为实部和虚部;分解为基本信号的有限项之和;因⼦分解;连续信号分解为矩形脉冲序列;正交分解。
信号与系统卷积的原理及应用matlab实验
信号与系统卷积的原理及应用matlab实验一、信号与系统基础概念信号是指随时间或空间变化的物理量,可以是电压、电流、声音等。
系统是指对输入信号进行处理的设备或算法,可以是滤波器、放大器等。
二、卷积的定义卷积是一种信号处理方法,用于描述一个信号经过另一个信号响应后产生的输出。
数学上,卷积可以表示为两个函数之间的积分运算,即:y(t) = ∫x(τ)h(t-τ)dτ其中,y(t)表示输出信号,x(t)表示输入信号,h(t)表示系统的单位响应。
三、卷积定理卷积定理是指在频域中进行卷积运算时,等价于对两个函数进行乘法运算后再进行逆变换。
即:F{f*g} = F{f}·F{g}其中,f和g分别为两个函数,在频域中表示为F{f}和F{g}。
四、离散卷积与离散卷积定理在数字信号处理中,使用离散卷积来描述一个序列经过另一个序列响应后产生的输出序列。
离散卷积可以表示为:y[n] = ∑x[k]h[n-k]其中,y[n]表示输出序列,x[k]表示输入序列,h[n-k]表示系统的单位响应。
离散卷积定理是指在频域中进行离散卷积运算时,等价于对两个序列进行乘法运算后再进行逆变换。
即:DFT{f*g} = DFT{f}·DFT{g}其中,f和g分别为两个序列,在频域中表示为DFT{f}和DFT{g}。
五、matlab实验1. 实验目的通过matlab实现离散卷积的计算,并观察离散卷积定理的效果。
2. 实验步骤(1)生成两个长度为N的随机序列x和h。
(2)使用matlab自带函数conv计算x和h的离散卷积y1,并绘制其图像。
(3)将x和h分别进行N点FFT变换得到X和H,在频域中计算它们的乘积Y2=X·H。
(4)将Y2进行N点IFFT变换得到y2,并绘制其图像。
(5)比较y1和y2的差异,观察离散卷积定理的效果。
3. 实验结果与分析实验结果如下图所示:从图中可以看出,y1和y2基本重合,说明离散卷积定理在频域中成立。
基于MATLAB的信号处理系统设计与实现
基于MATLAB的信号处理系统设计与实现信号处理是一门研究如何对信号进行采集、传输、处理和分析的学科,广泛应用于通信、雷达、生物医学工程、音频处理等领域。
MATLAB作为一种强大的科学计算软件,被广泛应用于信号处理系统的设计与实现。
本文将介绍基于MATLAB的信号处理系统设计与实现的相关内容,包括信号处理基础知识、MATLAB工具箱的运用、系统设计流程以及实际案例分析等。
信号处理基础知识在开始介绍基于MATLAB的信号处理系统设计与实现之前,首先需要了解一些信号处理的基础知识。
信号可以分为模拟信号和数字信号两种类型,其中模拟信号是连续时间和连续数值的信号,而数字信号是离散时间和离散数值的信号。
在信号处理过程中,常见的操作包括采样、量化、编码、滤波、变换等。
MATLAB工具箱的运用MATLAB提供了丰富的工具箱,包括Signal Processing Toolbox、Communications Toolbox等,这些工具箱提供了丰富的函数和工具,方便工程师们进行信号处理系统的设计与实现。
Signal Processing Toolbox提供了各种滤波器设计方法、频谱分析函数、时频分析函数等;Communications Toolbox则提供了各种调制解调器设计方法、误码率分析函数等。
系统设计流程基于MATLAB的信号处理系统设计与实现通常包括以下几个步骤:信号生成:根据系统需求生成相应的输入信号,可以是正弦波、方波、随机信号等。
信号采集:利用MATLAB中提供的函数对输入信号进行采集,并进行必要的预处理。
信号处理:根据系统需求对采集到的信号进行滤波、变换、解调等操作。
系统建模:建立相应的数学模型来描述整个信号处理系统。
系统仿真:利用MATLAB进行系统仿真,验证系统设计是否符合要求。
系统实现:将设计好的系统转化为实际可执行的代码,并部署到目标平台上。
实际案例分析下面通过一个简单的实际案例来演示基于MATLAB的信号处理系统设计与实现过程。
信号与系统实验指导书(matlab软件仿真)
信号与系统实验指导书(MATLAB仿真)目录实验一MATLAB 基本应用 (2)实验二信号的时域表示 (7)实验三连续信号卷积 (11)实验四典型周期信号的频谱表示 (18)实验五傅立叶变换性质研究 (23)实验六离散信号分析 (26)实验七离散系统的Z域分析 (29)Matlab相关符号及函数说明 (37)实验一MATLAB 基本应用一、实验目的:学习MATLAB的基本用法,了解 MATLAB 的目录结构和基本功能以及MATLAB在信号与系统中的应用。
二、实验内容:例一已知x的取值范围,画出y=sin(x)的图型。
参考程序:x=0:0.05:4*pi;y=sin(x);plot(y)例二计算y=sin(π/5)+4cos(π/4)例三已知z 取值范围,x=sin(z);y=cos(z);画三维图形。
z=0:pi/50:10*pi;x=sin(z);y=cos(z);plot3(x,y,z)xlabel('x')ylabel('y')zlabel('z')例四已知x的取值范围,用subplot函数绘图。
参考程序:x=0:0.05:7;y1=sin(x);y2=1.5*cos(x);y3=sin(2*x);y4=5*cos(2*x);subplot(2,2,1),plot(x,y1),title('sin(x)')subplot(2,2,2),plot(x,y2),title('1.5*cos(x)')subplot(2,2,3),plot(x,y3),title('sin(2*x)')subplot(2,2,4),plot(x,y4),title('5*cos(2*x)')连续信号的MATLAB表示1、指数信号:指数信号Ae at在MATLAB中可用exp函数表示,其调用形式为:y=A*exp(a*t) (例取A=1,a=-0.4)参考程序:A=1;a=-0.4;t=0:0.01:10;ft=A*exp(a*t);plot(t,ft);grid on;注:grid on是一个函数,表示在画图的时候添加网格线。
信号与系统信号基本运算的MATLAB实现实验报告
信号与系统实验报告实验一、信号基本运算的MATLAB 实现一、实验目的学习如何利用Matlab 实现信号的基本运算,掌握信号的基本运算的原理,加深对书本知识的理解。
二、实验材料PC 机一台三、实验内容1、(1)编写如图Exercise1.1所示波形的MATLAB 函数。
(2)试画出f(t),f(0.5t),f(1-2t)的波形。
解:程序如下: 实验结果: function yt = f2(t)yt=tripuls(t,4,0.5); t=-3:0.01:5; subplot(311) plot(t,tx(t)) title('f£¨t£©') subplot(312) plot(t,tx(0.5*t)) title('f(0.5t)') subplot(313) plot(t,tx(-2*t)) title('f(-2t)') 2、画出如图exercise1.2所示序列f[2k]、f[-k]和f[k+2],f[k-2]的波形。
并求f[k]的和。
解:程序如下:function f=ls(k)f=3.*(k==-2)+1.*(k==-1)+(-2).*(k==0)+(-1).*(k==1)+2.*(k==2)+(-3).*(k==3);Exercise 1.1-3f[k] kExercise1.2k=-5:0.01:10;subplot(321)stem(k,ls(k)) 实验结果:title('f[k]')subplot(322)stem(k,ls(2*k))title('f[2k]')subplot(323)stem(k,ls(-1*k))title('f[-k]')subplot(324)stem(k,ls(k+2))title('f[k+2]')subplot(325)stem(k,ls(k-2))title('f[k-2]')subplot(326)plot(k,sum(ls(-2:3)))title('Sum f[k]')3、解:程序如下:function y=tx(t)y=0.*(t>=2|t<-1)+(2-t).*(t>=1&t<2)+1.*(t>=-1&t<1); t=-5:0.01:5; 实验结果:ft1=tripuls(t-3,2,0.5);subplot(311)plot(t,ft1)title('f(t)')ft1=tripuls(-t-3,2,0.5);subplot(312)plot(t,ft1)title('f(-t)')ft1=tripuls(-2*t-2,2,0.5);subplot(313)plot(t,ft1)title('f(1-2t)')。
MATLAB实验3信号与系统频域分析的MATLAB实现
举例4 举例4
用有限时宽余弦信号f(t)=cos(2πt/3)(0≤ 40)近似 用有限时宽余弦信号f(t)=cos(2πt/3)(0≤t ≤40)近似 理想余弦信号,用Matlab编程画出该信号及其抽 理想余弦信号,用Matlab编程画出该信号及其抽 样信号的频谱,并对比观察过抽样和欠抽样状态。 解:首先计算该信号的临界抽样角频率 临界抽样频率 临界抽样周期
举例1 举例1
syms t x=exp(-2*abs(t)) F=fourier(x) subplot(211) ezplot(x) subplot(212) ezplot(F)
仿真波形
x4/(4+w^2)
举例2 举例2 傅里叶变换的对称性
命令代码1 命令代码1: syms t r=0.01;%采样间隔 r=0.01;%采样间隔 j=sqrt(j=sqrt(-1); t=-15:r:15; t=f=sin(t)./t;%计算采样函数的离散采样点 f=sin(t)./t;%计算采样函数的离散采样点 f1=pi*(Heaviside(t+1)-Heaviside(t-1));%计算脉 f1=pi*(Heaviside(t+1)-Heaviside(t-1));%计算脉 宽为2 宽为2的门信号的离散采样点 N=500;%采样点数 N=500;%采样点数 W=5*pi*1;%设定采样角频率 W=5*pi*1;%设定采样角频率 w=k*W/N;%对频率采样 w=k*W/N;%对频率采样
一个频谱受限的信号
2 fm
或者说, 或者说,最低抽样频率为 2 最低抽样频率
fm
→
。 称为“奈奎斯特频率” 称为“奈奎斯特频率”。
fs = 2 fm
也就是说:对于带限信号, 也就是说:对于带限信号,当
《信号与系统》MATLAB仿真实验讲义
《信号与系统》MATLAB仿真实验讲义(第二版)肖尚辉编写宜宾学院电信系电子信息教研室《信号与系统》课程2004年3月 宜宾使用对象:电子专业02级3/4班(本科)实验一 产生信号波形的仿真实验一、实验目的:熟悉MATLAB软件的使用,并学会信号的表示和以及用MATLAB来产生信号并实现信号的可视化。
二、实验时数:3学时+3学时(即两次实验内容)三、实验内容:信号按照自变量的取值是否连续可分为连续时间信号和离散时间信号。
对信号进行时域分析,首先需要将信号随时间变化的规律用二维曲线表示出来。
对于简单信号可以通过手工绘制其波形,但对于复杂的信号,手工绘制信号波形显得十分困难,且难以绘制精确的曲线。
在MATLAB中通常用三种方法来产生并表示信号,即(1)用MATLAB软件的funtool符合计算方法(图示化函数计算器)来产生并表示信号;(2)用MATLAB软件的信号处理工具箱(Signal Processing Toolbox)来产生并表示信号;(3)用MATLAB软件的仿真工具箱Simulink中的信号源模块。
(一) 用MATLAB软件的funtool符合计算方法(图示化函数计算器)来产生并表示信号在MATLAB环境下输入指令funtool,则回产生三个视窗。
即figure No.1:可轮流激活,显示figure No.3的计算结果。
figure No.2:可轮流激活,显示figure No.3的计算结果。
figure No.3:函数运算器,其功能有:f,g可输入函数表达式;x是自变量,在缺省时在[-2pi,2pi]的范围内;自由参数是a;在分别输入完毕后,按下面四排的任一运算操作键,则可在figure No.1或figure No.2产生相应的波形。
学生实验内容:产生以下信号波形3sin(x)、5exp(-x)、sin(x)/x、1-2abs(x)/a、sqrt(a*x)(二) 用MATLAB软件的信号处理工具箱(Signal Processing Toolbox)来产生并表示信号一种是用向量来表示信号,另一种则是用符合运算的方法来表示信号。
信号与系统实验
《信号与系统及MATLAB实现》实验指导书五邑大学前言长期以来,《信号与系统》课程一直采用单一理论教学方式,同学们依靠做习题来巩固和理解教学内容,虽然手工演算训练了计算能力和思维方法,但是由于本课程数学公式推导较多,概念抽象,常需画各种波形,作题时难免花费很多时间,现在,我们给同学们介绍一种国际上公认的优秀科技应用软件MATLAB,借助它我们可以在电脑上轻松地完成许多习题的演算和波形的绘制。
MATLAB的功能非常强大,我们此处仅用到它的一部分,在后续课程中我们还会用到它,在未来地科学研究和工程设计中有可能继续用它,所以有兴趣的同学,可以对MATLAB 再多了解一些。
MATLAB究竟有那些特点呢?1.高效的数值计算和符号计算功能,使我们从繁杂的数学运算分析中解脱出来;2.完备的图形处理功能,实现计算结果和编程的可视化;3.友好的用户界面及接近数学表达式的自然化语言,易于学习和掌握;4.功能丰富的应用工具箱,为我们提供了大量方便实用的处理工具;MATLAB的这些特点,深受大家欢迎,由于个人电脑地普及,目前许多学校已将它做为本科生必须掌握的一种软件。
正是基于这些背景,我们编写了这本《信号与系统及MATLAB实现》指导书,内容包括信号的MA TLAB表示、基本运算、系统的时域分析、频域分析、S域分析、状态变量分析等。
通过这些练习,同学们在学习《信号与系统》的同时,掌握MATLAB的基本应用,学会应用MATLAB的数值计算和符号计算功能,摆脱烦琐的数学运算,从而更注重于信号与系统的基本分析方法和应用的理解与思考,将课程的重点、难点及部分习题用MATLAB进行形象、直观的可视化计算机模拟与仿真实现,加深对信号与系统的基本原理、方法及应用的理解,为学习后续课程打好基础。
另外同学们在进行实验时,最好事先预习一些MATLAB的有关知识,以便更好地完成实验,同时实验中也可利用MATLAB的help命令了解具体语句以及指令的使用方法。
信号与系统MATLAB实验
2016-2017学年第一学期信号与系统实验报告班级:姓名:学号:成绩:指导教师:实验一 常见信号的MATLAB 表示及运算一.实验目的1.熟悉常见信号的意义、特性及波形2.学会使用MATLAB 表示信号的方法并绘制信号波形 3. 掌握使用MATLAB 进行信号基本运算的指令 4. 熟悉用MATLAB 实现卷积积分的方法二.实验原理信号一般是随时间而变化的某些物理量;按照自变量的取值是否连续,信号分为连续时间信号和离散时间信号,一般用()f t 和()f k 来表示;若对信号进行时域分析,就需要绘制其波形,如果信号比较复杂,则手工绘制波形就变得很困难,且难以精确;MATLAB 强大的图形处理功能及符号运算功能,为实现信号的可视化及其时域分析提供了强有力的工具;根据MATLAB 的数值计算功能和符号运算功能,在MATLAB 中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法;在采用适当的MATLAB 语句表示出信号后,就可以利用MATLAB 中的绘图命令绘制出直观的信号波形了;下面分别介绍连续时间信号和离散时间信号的MATLAB 表示及其波形绘制方法;1.连续时间信号所谓连续时间信号,是指其自变量的取值是连续的,并且除了若干不连续的点外,对于一切自变量的取值,信号都有确定的值与之对应;从严格意义上讲,MATLAB 并不能处理连续信号;在MATLAB 中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号;在MATLAB 中连续信号可用向量或符号运算功能来表示;⑴ 向量表示法对于连续时间信号()f t ,可以用两个行向量f 和t 来表示,其中向量t 是用形如12::t t p t 的命令定义的时间范围向量,其中,1t 为信号起始时间,2t 为终止时间,p 为时间间隔;向量f 为连续信号()f t 在向量t 所定义的时间点上的样值; 说明: plot 是常用的绘制连续信号波形的函数;严格说来,MATLAB 不能表示连续信号,所以,在用plot 命令绘制波形时,要对自变量t 进行取值,MATLAB 会分别计算对应点上的函数值,然后将各个数据点通过折线连接起来绘制图形,从而形成连续的曲线;因此,绘制的只是近似波形,而且,其精度取决于t 的取样间隔;t 的取样间隔越小,即点与点之间的距离越小,则近似程度越好,曲线越光滑;例如:图1-1是在取样间隔为p=时绘制的波形,而图1-2是在取样间隔p=时绘制的波形,两相对照,可以看出图1-2要比图1-1光滑得多;在上面的f=sint . /t 语句中,必须用点除符号,以表示是两个函数对应点上的值相除;⑵ 符号运算表示法如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot 等函数来绘出信号的波形; ⑶ 常见信号的MATLAB 表示对于普通的信号,应用以上介绍的两种方法即可完成计算函数值或绘制波形,但是对于一些比较特殊的信号,比如单位阶跃信号t 、符号函数sgnt 等,在MATLAB 中这些信号都有专门的表示方法; 单位阶跃信号单位阶跃信号的定义为:10()0t t t ε>⎧=⎨<⎩,单位阶跃信号是信号分析的基本信号之一,在信号与系统分析中有着非常重要的作用,通常,我们用它来表示信号的定义域,简化信号的时域表示形式;例如:可以用两个不同延时的单位阶跃信号来表示一个矩形门信号,即:2()(1)(1)G t t t εε=+--在MATLAB 中,可通过多种方法得到单位阶跃信号,下面分别介绍; 方法一: 调用Heavisidet 函数在MATLAB 的Symbolic Math Toolbox 中,有专门用于表示单位阶跃信号的函数,即Heavisidet 函数,用它即可方便地表示出单位阶跃信号以及延时的单位阶跃信号,并且可以方便地参加有关的各种运算过程;首先定义函数Heavisidet 的m 函数文件,该文件名应与函数名同名即;%定义函数文件,函数名为Heaviside,输入变量为x,输出变量为y function y= Heavisidety=t>0; %定义函数体,即函数所执行指令%此处定义t>0时y=1,t<=0时y=0,注意与实际阶跃信号定义的区别; 方法二:数值计算法在MATLAB 中,有一个专门用于表示单位阶跃信号的函数,即stepfun 函数,它是用数值计算法表示的单位阶跃函数()t ε;其调用格式为: stepfunt,t0其中,t 是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零;有趣的是它同时还可以表示单位阶跃序列()k ε,这只要将自变量以及取样间隔设定为整数即可;有关单位阶跃序列()k ε的表示方法,我们后面有专门论述,下面通过一个例子来说明如何调用stepfun 函数来表示单位阶跃函数; 符号函数符号函数的定义为:10sgn()1t t t >⎧=⎨-<⎩在MATLAB 中有专门用于表示符号函数的函数sign ,由于单位阶跃信号 t和符号函数两者之间存在以下关系:1122()sgn()t t ε=+,因此,利用这个函数就可以很容易地生成单位阶跃信号;下面举个例子来说明如何利用sign 函数生成单位阶跃信号,并同时绘制其波形; 2.离散时间信号离散时间信号又叫离散时间序列,一般用()f k 表示,其中变量k 为整数,代表离散的采样时间点采样次数;三.实验内容1.分别用MATLAB 的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形:2[]()cos()()(4)2tf t t t πεε=--syms t;f=sym'costpit/2heavisidet-heavisidet-4'; ezplotf,-2,8; 423()(2)f t t t ε=+syms t;f=sym'2/3theavisidet+2'; ezplotf,-4,8;2.分别用MATLAB 表示并绘出下列离散时间信号的波形: 2[]()()(8)f t k k k εε=-- t=0:8; t1=-10:15;f=zeros1,10,t,zeros1,7; stemt1,faxis-10,15,0,10 4 ()(2)f k k ε=-+t=-20:10;f=ones1,23,zeros1,8; stemt,f stemt,f3.已知信号f t 的波形如下图所示,试用MATLAB 绘出满足下列要求的信号波形; 2(2)f t -t=-1::4; t0=0; t1=1; t2=2;ut=2stepfunt,t0-2stepfunt,t1+stepfunt,t1-stepfunt,t2;plott-2,ut axis-3,2,0,3 4(0.51)f t +t=-1::4;t0=0;t1=1; t2=2;ut=2stepfunt,t0-2stepfunt,t1+stepfunt,t1-stepfunt,t2; plott+1,ut axis-1,2,0,44.已知两信号1()(1)()f t t t εε=+-,2()()(1)f t t t εε=--,求卷积积分12()()()g t f t f t =*,并与例题比较;程序清单:t1=-1::0; t2=0::1; t3=3::5;f1=onessizet1; f2=onessizet2; g=convf1,f2; plott3,g 信号波形:5.已知两信号1()()f t t t ε=,20()()0t tt te t f t t eε-≥⎧=⎨<⎩,求卷积积分12()()()g t f t f t =*;程序代码:t1=0::5;t2=-5::5; t3=-5::10; f1=t1;f2=expt2.t2<0+t2.exp-t2.t2>=0; g=convf1,f2; plott3,g;运行结果截图:6.已知{}{}12()1,1,1,2,()1,2,3,4,5f k f k ==,求两序列的卷积和 ; 程序清单:f1=1,1,1,2,0; f2=1,2,3,4,5; f=convf1,f2; x=0:8;stemx,f,'filled' 信号波形:实验二 LTI 系统的响应一、实验目的1.熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法2.熟悉连续离散时间系统在任意信号激励下响应的求解方法3.熟悉应用MATLAB 实现求解系统响应的方法二、实验原理1.连续时间系统对于连续的LTI 系统,当系统输入为ft ,输出为yt ,则输入与输出之间满足如下的线性常系数微分方程:()()0()()nmi j i j i j a y t b f t ===∑∑,当系统输入为单位冲激信号δt 时产生的零状态响应称为系统的单位冲激响应,用ht 表示;若输入为单位阶跃信号εt 时,系统产生的零状态响应则称为系统的单位阶跃响应,记为gt ,如下图所示;系统的单位冲激响应ht 包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关;我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应;因此,求解系统的冲激响应ht 对我们进行连续系统的分析具有非常重要的意义;在MATLAB 中有专门用于求解连续系统冲激响应和阶跃响应, 并绘制其时域波形的函数impulse 和step ;如果系统输入为ft ,冲激响应为ht ,系统的零状态响应为yt ,则有:()()()y t h t f t =*;若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应;但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐;在MATLAB 中,应用lsim 函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应;lsim 函数不仅能够求出连续系统在指定的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图;2.离散时间系统LTI 离散系统中,其输入和输出的关系由差分方程描述:00()()n mi ji j a y k i bf k j ==+=+∑∑前向差分方程()()nmi ji j a y k i bf k n j ==-=-+∑∑ 后向差分方程当系统的输入为单位序列δk 时产生的零状态响应称为系统的单位函数响应,用hk 表示;当输入为 εk 时产生的零状态响应称为系统的单位阶跃应,记为:gk ,如下图所示;如果系统输入为ek ,冲激响应为hk ,系统的零状态响应为y k ,则有:()()()y k h k f k =*;与连续系统的单位冲激响应ht 相类似,离散系统的单位函数响应hk 也包含了系统的固有特性,与输入序列无关;我们只要知道了系统的单位函数响应,即可求得系统在不同激励信号作用下产生的响应;因此,求解系统的单位函数响应hk 对我们进行离散系统的分析也同样具有非常重要的意义;MATLAB 中为用户提供了专门用于求解离散系统单位函数响应, 并绘制其时域波形的函数impz ;同样也提供了求离散系统响应的专用函数filter ,该函数能求出由差分方程所描述的离散系统在指定时间范围内的输入序列作用时,产生的响应序列的数值解;当系统初值不为零时,可以使用dlsim 函数求出离散系统的全响应,其调用方法与前面连续系统的lsim 函数相似;另外,求解离散系统阶跃响应可以通过如下两种方法实现:一种是直接调用专用函数dstep ,其调用方法与求解连续系统阶跃响应的专用函数step 的调用方法相似;另一种方法是利用求解离散系统零状态响应的专用函数filter ,只要将其中的激励信号看成是单位阶跃信号εk 即可;三、实验内容1. 已知描述系统的微分方程和激励信号et 分别如下,试用解析方法求系统的单位冲激响应ht 和零状态响应rt ,并用MATLAB 绘出系统单位冲激响应和系统零状态响应的波形,验证结果是否相同;①''()4'()4()'()3()y t y t y t f t f t ++=+;()()t f t e t ε-=程序清单:a=1 4 4;b=1 3; impulseb,a,10 p=;t=0:p:10; x=exp-1t;y=filterb,a,xsubplot2,1,1,impulseb,a,10 subplot2,1,2,lsimb,a,x,t②''()2'()26()'()y t y t y t f t ++=;()()f t t ε= 单位冲激响应程序代码: a=1 2 26;b=1;subplot2,1,1, impulseb,a,4 subplot2,1,2, stepb,a,4 运行结果截图:零状态响应程序代码: a=1 2 26;b=1; p1=;t1=0:p1:10; x1=t1;lsimb,a,x1,t1 运行结果截图:③''()4'()3()()y t y t y t f t ++=;2()()t f t e t ε-=a=1 4 3;b=1; p=;t=0:p:10; x=exp-2ty=filterb,a,xsubplot2,1,1,impulseb,a,10 subplot2,1,2,lsimb,a,x,t④如下图所示的电路中,已知1234()R R R ===Ω,121()L L H ==,且两电感上初始电流分别为12(0)2(),(0)0()i A i A ==,如果以电阻3R 上电压()y t 作为系统输出,请求出系统在激励()12()f t t ε=v 作用下的全响应;程序清单:A=-8 4;4 -8;B=1;0;C=-4 4;D=0; x0=2;0; t=0::10;E=12.onessizet;r,x=lsimA,B,C,D,E,t,x0; plott,r信号波形:阶跃响应程序代码: a=1,-5/6,1/6;b=1,0,-1; k=0:20;x=heavisidek; y=filterb,a,xsubplot2,1,1,stemk,x title'输入序列'subplot2,1,2,stemk,y title'输出序列' 运行结果截图:④一带通滤波器可由下列差分方程描述:()0.81(2)()(2)y k y k f k f k +-=--,其中()f k 为系统输入, ()y k 为系统输出;请求出当激励[]()1010cos(/2)10cos()()f k kn kn k ε=++选取适当的n 值时滤波器的稳态输出;a=1,0,81/100; b=1,0,-1; k=0:20;x=10+10.cos1/2.k+10.cosk; y=filterb,a,xsubplot3,1,1,impzb,a,0:20, subplot3,1,2,dstepb,a,0:20, subplot3,1,3,stemk,y实验三连续时间信号的频域分析一、实验目的1.熟悉傅里叶变换的性质 2.熟悉常见信号的傅里叶变换3.了解傅里叶变换的MATLAB 实现方法二、实验原理傅里叶变换是信号分析 的最重要的内容之一;从已知信号()f t 求出相应的频谱函数()F j ω的数学表示为:()F j ω()j t f t e dt ω∞--∞=⎰()f t 的傅里叶变换存在的充分条件是()f t 在无限区间内绝对可积,即()f t 满足下式: ()f t dt ∞-∞<∞⎰但上式并非傅里叶变换存在的必要条件;在引入广义函数概念之后,使一些不满足绝对可积条件的函数也能进行傅里叶变换;傅里叶反变换的定义为:1()()2j tf t F j e d ωωωπ∞-∞=⎰; 在这一部分的学习中,大家都体会到了这种数学运算的麻烦;在MATLAB 语言中有专门对信号进行正反傅里叶变换的语句,使得傅里叶变换很容易在MATLAB 中实现;在MATLAB 中实现傅里叶变换的方法有两种,一种是利用MATLAB 中的Symbolic Math Toolbox 提供的专用函数直接求解函数的傅里叶变换和傅里叶反变换,另一种是傅里叶变换的数值计算实现法;1.直接调用专用函数法①在MATLAB 中实现傅里叶变换的函数为: F=fourier f对ft 进行傅里叶变换,其结果为FwF =fourierf,v对ft 进行傅里叶变换,其结果为FvF=fourier f,u,v对fu 进行傅里叶变换,其结果为Fv②傅里叶反变换f=ifourier F 对Fw 进行傅里叶反变换,其结果为fx f=ifourierF,U对Fw 进行傅里叶反变换,其结果为fu f=ifourier F,v,u 对Fv 进行傅里叶反变换,其结果为fu由于MATLAB 中函数类型非常丰富,要想了解函数的意义和用法,可以用mhelp 命令;如在命令窗口键入:mhelp fourier 回车,则会得到fourier 的意义和用法; 注意:1在调用函数fourier 及ifourier 之前,要用syms 命令对所有需要用到的变量如t,u,v,w 等进行说明,即要将这些变量说明成符号变量;对fourier 中的f 及ifourier 中的F 也要用符号定义符sym 将其说明为符号表达式;2采用fourier 及fourier 得到的返回函数,仍然为符号表达式;在对其作图时要用ezplot 函数,而不能用plot 函数;3fourier 及fourier 函数的应用有很多局限性,如果在返回函数中含有δω等函数,则ezplot 函数也无法作出图来;另外,在用fourier 函数对某些信号进行变换时,其返回函数如果包含一些不能直接表达的式子,则此时当然也就无法作图了;这是fourier 函数的一个局限;另一个局限是在很多场合,尽管原时间信号ft 是连续的,但却不能表示成符号表达式,此时只能应用下面介绍的数值计算法来进行傅氏变换了,当然,大多数情况下,用数值计算法所求的频谱函数只是一种近似值;三、 实验内容1.编程实现求下列信号的幅度频谱1求出1()(21)(21)f t t t εε=+--的频谱函数F1jω,请将它与上面门宽为2的门函数()(1)(1)f t t t εε=+--的频谱进行比较,观察两者的特点,说明两者的关系;f1t 函数程序代码: syms t w;Gt=sym'Heaviside2t+1-Heaviside2t-1'; Fw=fourierGt,t,w;FFw=maple'convert',Fw,'piecewise'; FFP=absFFw;ezplotFFP,-10pi 10pi;grid; axis-10pi 10pi 0 ; f1t 函数图像: 门函数程序代码: syms t w;Gt=sym'Heavisidet+1-Heavisidet-1'; Fw=fourierGt,t,w;FFw=maple'convert',Fw,'piecewise'; FFP=absFFw;ezplotFFP,-10pi 10pi;grid; axis-10pi 10pi 0 ; 门函数图像:2 三角脉冲21||||1()0||1t t f t t -≤⎧=⎨>⎩程序清单:f2t 函数程序代码:syms t wGt=sym'1+tHeavisidet+1-Heavisidet+1-tHeavisidet-Heavisidet-1'; Fw=fourierGt,t,w;FFw=maple'convert',Fw,'piecewise';FFP=absFFw;ezplotFFP,-10pi 10pi;grid;axis-10pi 10pi 0 ;f2t 函数图像:3 单边指数信号 3()()t f t e t ε-=程序清单:syms t wGt=sym'exp-1theavisidet';Fw=fourierGt,t,w;FFw=maple'convert',Fw,'piecewise';FFP=absFFw; ezplotFFP,-7pi 7pi;grid;axis-7pi 7pi 0信号波形:4 高斯信号23()t f t e -=程序清单:syms t w;Gt=exp-t.^2;Fw=fourierGt,t,wFFP=absFwezplotFw,-30 30;grid;axis-30 30 0 2信号波形:2.利用ifourier 函数求下列频谱函数的傅氏反变换 122()16F j j ωωω=-+ 程序清单:syms t wFw=sym '-j2w/16+w^2';ft=ifourier Fwft=ifourierFw,w,t;运行结果:ft=-jexp-4absxsignx1i222()58()()65j jF jj jωωωωω+-=++syms t wFw=sym'jw^2+5jw-8/jw^2+6jw+5';ft=ifourierFwft=ifourierFw,w,t;运行结果:ft =2pidiracx + piexp-x1i/jsignimag1/j3i/j -piexp-x5i/jsignimag1/j2i/j - piexp-x1i/jsignx3i/j +piexp-x5i/jsignx2i/j/2pi实验四离散信号与系统的时域分析一、实验目的1.学会用MATLAB表示常用离散信号的方法;2.学会用MATLAB实现离散信号卷积的方法;3.学会用MATLAB求解离散系统的单位响应;4.学会用MATLAB求解离散系统的零状态响应;二、实验原理1.离散信号的MATLAB表示表示离散时间信号fk需要两个行向量,一个是表示序号k= ,一个是表示相应函数值f= ,画图命令是stem;2.离散信号的卷积和两个有限长序列f1,f2卷积可调用MATLAB函数conv,调用格式是f=convf1,f2, f是卷积结果,但不显示时间序号,可自编一个函数dconv给出f 和k,并画图;3.离散系统的单位响应MATLAB提供画系统单位响应函数impz,调用格式是impzb,a 式中b和a是表示离散系统的行向量;impzb,a,n 式中b和a是表示离散系统的行向量,时间范围是0~n;impzb,a,n1,n2 时间范围是n1~n2 ;y=impzb,a,n1,n2 由y给出数值序列;4.离散系统的零状态响应MATLAB提供求离散系统零状态响应数值解函数filter,调用格式为filterb,a,x,式中b和a是表示离散系统的向量,x是输入序列非零样值点行向量,输出向量序号同x一样;三、上机实验内容1.验证实验原理中程序离散信号的MATLAB表示例2-1正弦序列信号 正弦序列信号可直接调用MATLAB 函数cos,例)cos(ϕω+k ,当ωπ/2是整数或分数时,才是周期信号;画)8/cos(ϕπ+k ,)2cos(k 波形程序是:k=0:40;subplot2,1,1stemk,coskpi/8,'filled'title'coskpi/8'subplot2,1,2stemk,cos2k,'filled'title'cos2k'2.已知)2(2)1(3)()2()1(2)(2-+-+=-+--k f k f k f k y k y k y ,画单位响应波形;a=2,-2,1;b=1,3,2;impzb,aimpzb,a,60impzb,a,-10:403.已知)()2(25.0)1()(k f k y k y k y =-+-+,输入)()(k t f ε=,画输出波形,范围0~15;a=1 1 ;b=1 ;t=0:15;x=t;y=filterb,a,xsubplot2,1,1stemt,xtitle'输入序列'subplot2,1,2stemt,ytitle'响应序列'实验五 连续信号与系统的S 域分析一、实验目的1. 熟悉拉普拉斯变换的原理及性质2. 熟悉常见信号的拉氏变换3. 了解正/反拉氏变换的MATLAB 实现方法和利用MATLAB 绘制三维曲面图的方法4. 了解信号的零极点分布对信号拉氏变换曲面图的影响及续信号的拉氏变换与傅氏变换的关系二、实验原理拉普拉斯变换是分析连续时间信号的重要手段;对于当t ∞时信号的幅值不衰减的时间信号,即在ft 不满足绝对可积的条件时,其傅里叶变换可能不存在,但此时可以用拉氏变换法来分析它们;连续时间信号ft 的单边拉普拉斯变换Fs 的定义为: 拉氏反变换的定义为:1()()2j st j f t F s e ds j σωσωπ+-=⎰显然,上式中Fs 是复变量s 的复变函数,为了便于理解和分析Fs 随s 的变化规律,我们将Fs 写成模及相位的形式:()()()j s F s F s e ϕ=;其中,|Fs|为复信号Fs 的模,而()s ϕ为Fs 的相位;由于复变量s=σ+jω,如果以σ为横坐标实轴,jω为纵坐标虚轴,这样,复变量s 就成为一个复平面,我们称之为s 平面;从三维几何空间的角度来看,|()|F s 和()s ϕ分别对应着复平面上的两个曲面,如果绘出它们的三维曲面图,就可以直观地分析连续信号的拉氏变换Fs 随复变量s 的变化情况,在MATLAB 语言中有专门对信号进行正反拉氏变换的函数,并且利用 MATLAB 的三维绘图功能很容易画出漂亮的三维曲面图;①在MATLAB 中实现拉氏变换的函数为:F=laplace f 对ft 进行拉氏变换,其结果为FsF=laplace f,v对ft 进行拉氏变换,其结果为FvF=laplace f,u,v对fu 进行拉氏变换,其结果为Fv②拉氏反变换f=ilaplace F对Fs 进行拉氏反变换,其结果为ftf=ilaplaceF,u 对Fw 进行拉氏反变换,其结果为fuf=ilaplaceF,v,u 对Fv 进行拉氏反变换,其结果为fu注意: 在调用函数laplace 及ilaplace 之前,要用syms 命令对所有需要用到的变量如t,u,v,w 等进行说明,即要将这些变量说明成符号变量;对laplace 中的f 及ilaplace 中的F 也要用符号定义符sym 将其说明为符号表达式;三、实验内容1.求出下列函数的拉氏变换式,并用MATLAB 绘制拉氏变换在s 平面的三维曲面图① 3()2()5()t t f t e t e t εε--=+函数程序代码:syms t sft=sym'2exp-tHeavisidet+5exp-3tHeavisidet';Fs=laplaceft运算结果:绘制三维曲面图的程序代码:syms x y ss=x+iy;FFs=2/s+1+5/s+3;FFss=absFFs;ezmeshFFss;ezsurfFFss;colormaphsv;运算结果截图:② ()()(2)f t t t εε=--函数程序代码:syms t sft=sym'Heavisidet-Heavisidet-2';Fs=laplaceft运算结果:绘制三维曲面图的程序代码:syms x y ss=x+iy;FFs=1/s-exp-2s/s;FFss=absFFs;ezmeshFFss;ezsurfFFss;colormaphsv;运算结果截图:③ 3()sin()()t f t e t t ε-=函数程序代码:syms t sft=sym'exp-3tsintHeavisidet';Fs=laplaceft运算结果:绘制三维曲面图的程序代码:syms x y ss=x+iy;FFs=1/s+3^2+1;FFss=absFFs;ezmeshFFss;ezsurfFFss;colormaphsv;运算结果截图:④ []()sin()()(2)f t t t t πεε=--函数程序代码:syms t sft=sym'sinpitHeavisidet-Heavisidet-2';Fs=laplaceft运算结果:绘制三维曲面图的程序代码:syms x y ss=x+iy;FFs= pi/s^2+pi^21/s-exp-2s/s;FFss=absFFs;ezmeshFFss;ezsurfFFss;colormaphsv;运算结果截图:2. 已知信号的拉氏变换如下,请用MATLAB 画出其三维曲面图,观察其图形特点,说出函数零极点位置与其对应曲面图的关系,并且求出它们所对应的原时间函数f t ①22(3)(3)()(5)(16)s s F s s s -+=-+ 函数程序代码:syms x y ss=x+iy;FFs=2s-3s+3/s-5s^2+16;FFss=absFFs;ezmeshFFss;ezsurfFFss;colormaphsv;运行结果截图:求原函数的程序代码:syms t sFs =sym'2s-3s+3/s-5s^2+16'ft=ilaplaceFs原函数:ft = 50cos4t/41 + 32exp5t/41 + 125sin4t/82 ②(1)(3)()(2)(5)s s F s s s s ++=++ 函数程序代码:syms x y ss=x+iy;FFs=s+1s+3/ss+2s+5;FFss=absFFs;ezmeshFFss;ezsurfFFss;colormaphsv;运行结果截图:求原函数的程序代码:syms t sFs =sym's+1s+3/ss+2s+5'ft=ilaplaceFs原函数:ft = exp-2t/6 + 8exp-5t/15 + 3/103. 已知连续时间信号[]()s(2)()(4)f t co t t t πεε=--,请分别求出该信号的拉氏变换()F s 及其傅里叶变换()F j ω,并用MATLAB 绘出()F s 的曲面图及振幅频谱()F j ω的波形,观察()F s 的曲面图在虚轴上的剖面图,并将它与信号的振幅频谱曲线进行比较,分析两者的对应关系;1拉氏变换:程序代码:syms t sft=sym'cos2pitHeavisidet-Heavisidet-4';Fs=laplaceft运算结果:Fs=laplaceHeavisidet, t, s-pi2i/2 + laplaceHeavisidet, t, s+pi2i/2 - laplaceHeavisidet - 4, t, s - pi2i/2 - laplaceHeavisidet - 4, t, s + pi2i/22傅里叶变换:程序代码:syms t wGt=sym'cos2pitHeavisidet-Heavisidet-4';Fw=fourierGt运算结果:Fw = fouriercos2pitHeavisidet, t, w - fourierHeavisidet - 4cos2pit, t, w四、总结报告由于平时都是在上课过程中学习理论知识,而这次实验是在理论知识的基础上来进行实验操作,但并是不全是上课时学习的理论知识,也存在许多的新知识;所以对于这次把上课时的理论知识并结合新知识一起应用于实践操作来说是有点困难的; 信号与系统的实验不同于大物实验,一开始说可以多人合作完成的实验,到最后是一个人单独完成;在为数不多的四次实验中,我深深感受到了团队合作在实验中的重要性;在自己对自己写出的代码,运行出现错误的时候,两个人或者多个人对实验的共同理解是实验高效、误差小完成的基础;参考文献:MATLAB应用大全MATLAB无师自通。
信号与系统实验(MATLAB 西电版)实验2 常用离散时间
实验2 常用离散时间信号的实现 图 2.3 数值法生成的单位阶跃序列
实验2 常用离散时间信号的实现
4) MATLAB
clf; c=-(1/12)+(pi/6)*i; K=2; n=0:40; x=K*exp(c*n); subplot(2,1,1);
实验2 常用离散时间信号的实现
stem(n,real(x)); ylabel(′幅值f(k)′); title(′实部′); subplot(2,1,2); stem(n,imag(x)); xlabel(′时间(k)′); ylabel(′幅值f(k)′); title(′虚部′); 用数值法生成的复指数序列如图2.4
实验2 常用离散时间信号的实现 图 2.6 数值法生成的正弦序列
实验2 常用离散时间信号的实现
7) 单位斜坡序列 MATLAB
clf; k1=-1; k2=20; k0=0; n=[k1:k2]; if k0>=k2 x=zeros(1,length(n)); elseif (k0<k2)&(k0>k1)
实验2 常用离散时间信号的实现 图 2.10 数值法生成的幅值调制序列
实验2 常用离散时间信号的实现
11) MATLAB clf; R=51; d=0.8*(rand(1,R)-0.5); % m=0:R-1; s=2*m.*(0.9.^m); % x=s+d; %
实验2 常用离散时间信号的实现
实验2 常用离散时间信号的实现 图 2.8 数值法生成的随机序列
实验2 常用离散时间信号的实现
9) 扫频正弦序列 MATLAB
n=0:100; a=pi/2/100; b=0; arg=a*n.*n + b*n; x=cos(arg); clf; stem(n,x); axis([0,100,-1.5,1.5]); grid; axis; title(′扫频正弦序列′) xlabel(′k′); ylabel(′f(k)′); 用数值法生成的扫频正弦序列如图2.9
信号与系统MATLAB实验全
实验篇 信号与系统实验指导实验一、MATLAB 编程基础及典型实例一、实验目的(1) 熟悉MATLAB 软件平台的使用; (2) 熟悉MATLAB 编程方法及常用语句; (3) 掌握MATLAB 的可视化绘图技术;(4) 结合《信号与系统》的特点,编程实现常用信号及其运算。
二、实验原理连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点以外,信号都有确定的值与之对应。
严格来说,MATLAB 并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。
当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。
矩阵是MATLAB 进行数据处理的基本单元,矩阵运算是MATLAB 最重要的运算。
通常意义上的数量(也称为标量)在MATLAB 系统中是作为1×1的矩阵来处理的,而向量实际上是仅有一行或者一列的矩阵。
通常用向量表示信号的时间取值范围,如n = -5:5,但信号x(n)、向量n 本身的下标都是从1开始的,因此必须用一个与向量x 等长的定位时间变量n ,以及向量x ,才能完整地表示序列x(n)。
这一点详情可参考预备篇示例7的程序说明。
三、实验内容与步骤(1) 新建一个文件夹,以自己的汉语名字命名,以后就用该文件夹专门存放自己所编制的M 文件和产生的图形;将该文件夹设置成当前工作目录。
(2) 绘制信号t)32sin(e x(t)t 2-=的曲线,t 的范围在0 ~ 30s ,取样时间间隔为0.1s.(3) 在n = [-10:10] 范围产生离散序列:⎩⎨⎧≤≤-=其余n0,3n 32n,x(n) ,并绘图。
四、实验报告要求整理并给出“实验内容与步骤”(2)、(3)的程序代码与产生的图形;并回答下面的问题。
(1) 在调用某一函数文件时,该文件中除了输入、输出变量外的其它变量在调用函数结束后是否还存在?这些变量是全局还是局部变量?(2) 设n = -10:0.2:20,你可以通过哪些方法查看向量n 的维数?经过关系运算y = (n >= 3)以后,y 的维数是多少?y 又等于什么?(3) 通过MATLAB 的帮助系统,学习fliplr 函数的功能和使用方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《信号与系统及MATLAB实现》实验指导书信息工程学院实验中心2009年3月前言长期以来,《信号与系统》课程一直采用单一理论教学方式,同学们依靠做习题来巩固和理解教学内容,虽然手工演算训练了计算能力和思维方法,但是由于本课程数学公式推导较多,概念抽象,常需画各种波形,作题时难免花费很多时间,现在,我们给同学们介绍一种国际上公认的优秀科技应用软件MATLAB,借助它我们可以在电脑上轻松地完成许多习题的演算和波形的绘制。
MATLAB的功能非常强大,我们此处仅用到它的一部分,在后续课程中我们还会用到它,在未来地科学研究和工程设计中有可能继续用它,所以有兴趣的同学,可以对MATLAB 再多了解一些。
MATLAB究竟有那些特点呢?1.高效的数值计算和符号计算功能,使我们从繁杂的数学运算分析中解脱出来;2.完备的图形处理功能,实现计算结果和编程的可视化;3.友好的用户界面及接近数学表达式的自然化语言,易于学习和掌握;4.功能丰富的应用工具箱,为我们提供了大量方便实用的处理工具;MATLAB的这些特点,深受大家欢迎,由于个人电脑地普及,目前许多学校已将它做为本科生必须掌握的一种软件。
正是基于这些背景,我们编写了这本《信号与系统及MATLAB实现》指导书,内容包括信号的MA TLAB表示、基本运算、系统的时域分析、频域分析、S域分析、状态变量分析等。
通过这些练习,同学们在学习《信号与系统》的同时,掌握MATLAB的基本应用,学会应用MATLAB的数值计算和符号计算功能,摆脱烦琐的数学运算,从而更注重于信号与系统的基本分析方法和应用的理解与思考,将课程的重点、难点及部分习题用MATLAB进行形象、直观的可视化计算机模拟与仿真实现,加深对信号与系统的基本原理、方法及应用的理解,为学习后续课程打好基础。
另外同学们在进行实验时,最好事先预习一些MATLAB的有关知识,以便更好地完成实验,同时实验中也可利用MATLAB的help命令了解具体语句以及指令的使用方法。
实验一 基本信号在MATLAB 中的表示和运算一、实验目的1. 学会用MA TLAB 表示常用连续信号的方法;2. 学会用MA TLAB 进行信号基本运算的方法;二、实验原理1. 连续信号的MATLAB 表示MATLAB 提供了大量的生成基本信号的函数,例如指数信号、正余弦信号。
表示连续时间信号有两种方法,一是数值法,二是符号法。
数值法是定义某一时间范围和取样时间间隔,然后调用该函数计算这些点的函数值,得到两组数值矢量,可用绘图语句画出其波形;符号法是利用MATLAB 的符号运算功能,需定义符号变量和符号函数,运算结果是符号表达的解析式,也可用绘图语句画出其波形图。
例1-1指数信号 指数信号在MATLAB 中用exp 函数表示。
如atAe t f =)(,调用格式为 ft=A*exp(a*t) 程序是A=1; a=-0.4;t=0:0.01:10; %定义时间点ft=A*exp(a*t); %计算这些点的函数值plot(t,ft); %画图命令,用直线段连接函数值表示曲线grid on; %在图上画方格例1-2 正弦信号 正弦信号在MATLAB 中用 sin 函数表示。
调用格式为 ft=A*sin(w*t+phi)A=1; w=2*pi; phi=pi/6;t=0:0.01:8; %定义时间点ft=A*sin(w*t+phi); %计算这些点的函数值plot(t,ft); %画图命令grid on; %在图上画方格例1-3 抽样信号 抽样信号Sa(t)=sin(t)/t 在MA TLAB 中用 sinc 函数表示。
定义为 )/(sin )(πt c t Sa =t=-3*pi:pi/100:3*pi;ft=sinc(t/pi);plot(t,ft);grid on;axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴title('抽样信号') %定义图的标题名字例1-4 三角信号 三角信号在MATLAB 中用 tripuls 函数表示。
调用格式为ft=tripuls(t,width,skew),产生幅度为1,宽度为width,且以0为中心左右各展开width/2大小,斜度为skew的三角波。
width的默认值是1,skew的取值范围是-1~+1之间。
一般最大幅度1出现在t=(width/2)*skew的横坐标位置。
t=-3:0.01:3;ft=tripuls(t,4,0.5);plot(t,ft); grid on;axis([-3,3,-0.5,1.5]);例1-5虚指数信号调用格式是f=exp((j*w)*t)t=0:0.01:15;w=pi/4;X=exp(j*w*t);Xr=real(X); %取实部Xi=imag(X); %取虚部Xa=abs(X); %取模Xn=angle(X); %取相位subplot(2,2,1),plot(t,Xr),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]),title('实部');subplot(2,2,3),plot(t,Xi),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]),title('虚部');subplot(2,2,2), plot(t,Xa),axis([0,15,0,max(Xa)+1]),title('模');subplot(2,2,4),plot(t,Xn),axis([0,15,-(max(Xn)+1),max(Xn)+1]),title('相角');%subplot(m,n,i) 命令是建立m行n列画图窗口,并指定画图位置i例1-6复指数信号调用格式是f=exp((a+j*b)*t)t=0:0.01:3;a=-1;b=10;f=exp((a+j*b)*t);subplot(2,2,1),plot(t,real(f)),title('实部')subplot(2,2,3),plot(t,imag(f)),title('虚部')subplot(2,2,2),plot(t,abs(f)),title('模')subplot(2,2,4),plot(t,angle(f)),title('相角')例1-7 矩形脉冲信号矩形脉冲信号可用rectpuls函数产生,调用格式为y=rectpuls(t,width),幅度是1,宽度是width,以t=0为对称中心。
t=-2:0.01:2;width=1;ft=2*rectpuls(t,width);plot(t,ft)grid on;例1-8 单位阶跃信号单位阶跃信号u(t)用“t>=0”产生,调用格式为ft=(t>=0) t=-1:0.01:5;ft=(t>=0);plot(t,ft); grid on;axis([-1,5,-0.5,1.5]);例1-9 正弦信号符号算法syms t %定义符号变量ty=sin(pi/4*t) %符号函数表达式ezplot(y,[-16,16]) %符号函数画图命令或者f=sym('sin(pi/4*t)') %定义符号函数表达式ezplot(f,[-16,16])例1-10单位阶跃信号MA TTLAB符号数学函数Heaviside表示阶跃信号,但要画图需在工作目录创建Heaviside的M文件function f=Heaviside(t)f=(t>0);保存,文件名是Heaviside ,调用该函数即可画图,例t=-1:0.01:3;f=heaviside(t);plot(t,f)axis([-1,3,-0.2,1.2])或者y=sym('Heaviside(t)');ezplot(y,[-1,5]);grid on2.信号基本运算的MATLAB实现信号基本运算是乘法、加法、尺度、反转、平移、微分、积分,实现方法有数值法和符号法例1-11 以f(t)为三角信号为例,求f(2t) , f(2-2t)t=-3:0.001:3;ft=tripuls(t,4,0.5);subplot(3,1,1);plot(t,ft); grid on;title ('f(t)');ft1= tripuls(2*t,4,0.5);subplot(3,1,2);plot(t,ft1); grid on;title ('f(2t)');ft2= tripuls(2-2*t,4,0.5);subplot(3,1,3);plot(t,ft2); grid on;title ('f(2-2t)');例1-12 已知f1(t)=sinwt , f2(t)=sin8wt , w=2pi , 求f1(t)+f2(t)和f1(t)f2(t) 的波形图w=2*pi;t=0:0.01:3;f1=sin(w*t);f2=sin(8*w*t);subplot(211)plot(t,f1+1,':',t,f1-1,':',t,f1+f2)grid on,title('f1(t)+f2(t))')subplot(212)plot(t,f1,':',t,-f1,':',t,f1.*f2)grid on,title('f1(t)*f2(t)')符号算法也可实现上述运算,以信号的微积分运算为例说明符号算法应用微分的调用格式为 diff(func tion,’variable’,n)积分的调用格式为 int(function,’variable’,a,b)式中function 表示要微分或积分的函数,variable 表示运算变量,n 表示求导阶数,默认值是求一阶导数,a 是积分下限,b 是积分上限,a b 默认是求不定积分。
例1-13 求一阶导数的例题,已知)sin(21ax y =,x x x y ln sin 2=clearsyms a x y1 y2 %定义符号变量a , x ,y1, y2y1=sin(a*x^2); %符号函数y1y2=x*sin(x)*log(x); %符号函数y2dy1=diff(y1,’x’) %无分号直接显示结果dy2=diff(y2) %无分号直接显示结果例1-14 求积分的例题,dx x ax x )2(5+-⎰,⎰+102)1(dx x xe xclearsyms a x y3 y4y3=x^5-a*x^2+sqrt(x)/2;y4=(x*exp(x))/(1+x)^2;iy3=int(y3,'x')iy4=int(y4,0,1)三、上机实验内容1. 验证实验原理中程序2. 画出信号波形(1))()2()(2t u et f t --= (2))]2()()[cos 1()(--+=t u t u t t f π 3.信号)()2()(2t u e t f t --=,求)2(t f 、)2(t f -波形实验二 离散信号与系统的时域分析一、实验目的1.学会用MA TLAB 表示常用离散信号的方法;2.学会用MA TLAB 实现离散信号卷积的方法;3. 学会用MA TLAB 求解离散系统的单位响应;4. 学会用MA TLAB 求解离散系统的零状态响应;二、实验原理1.离散信号的MA TLAB 表示表示离散时间信号f(k)需要两个行向量,一个是表示序号k=[ ],一个是表示相应函数值f=[ ],画图命令是stem 。