信号分析实验一内容
- 格式:doc
- 大小:243.50 KB
- 文档页数:11
实验一连续时间信号的时域和频域分析一. 实验目的:1. 熟悉MATLAB 软件平台。
2. 掌握MATLAB 编程方法、常用语句和可视化绘图技术。
3. 编程实现常用信号及其运算MATLAB 实现方法。
4. 编程实现常用信号的频域分析。
二. 实验原理:1、连续时间信号的描述:(1)向量表示法连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点之外,信号都有确定的值与之对应。
严格来说,MATLAB 并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。
当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。
矩阵是MATLAB 进行数据处理的基本单元,矩阵运算是MATLAB 最重要的运算。
通常意义上的数量(也称为标量)在MATLAB 系统中是作为1×1 的矩阵来处理的,而向量实际上是仅有一行或者一列的矩阵。
通常用向量表示信号的时间取值范围,如t = -5:5,但信号x(t)、向量t 本身的下标都是从1 开始的,因此必须用一个与向量x 等长的定位时间变量t,以及向量x,才能完整地表示序列x(t)。
在MATLAB 可视化绘图中,对于以t 为自变量的连续信号,在绘图时统一用plot 函数;而对n 为自变量的离散序列,在绘图时统一用stem 函数。
(2)符号运算表示法符号对象(Symbolic Objects 不同于普通的数值计算)是Matlab 中的一种特殊数据类型,它可以用来表示符号变量、表达式以及矩阵,利用符号对象能够在不考虑符号所对应的具体数值的情况下能够进行代数分析和符号计算(symbolic math operations),例如解代数方程、微分方程、进行矩阵运算等。
符号对象需要通过sym 或syms 函数来指定, 普通的数字转换成符号类型后也可以被作为符号对象来处理.我们可以用一个简单的例子来表明数值计算和符号计算的区别: 2/5+1/3 的结果为0.7333(double 类型数值运算), 而sym(2)/sym(5)+sym(1)/sym(3)的结果为11/15, 且这里11/15 仍然是属于sym 类型, 是符号数。
如果一个信号可以用符号表达式来表示,则可以通过符号函数专用绘图命令ezplot()函数来绘出信号的波形。
2、常见信号的matlab 描述(1)单位冲激信号δ(t) dirac()t=-10:0.01:10;plot(t,dirac(t))(2)单位阶跃信号u(t)t=-10:0.01:10;f1= heaviside(t)figure(1);plot(t,f1);f2= stepfun(t,0)figure(2)plot(t,f2);(3) 门信号t=-10:0.01:10;figure(1);plot(t,heaviside(t+2)- heaviside(t-2));figure(2)plot(t,stepfun(t,-2)- stepfun(t,2));(4) 符号函数 sign()(5)正弦、余弦、指数信号:sin、cos、exp3.连续信号的相加、相乘、时移、反转和尺度变换等基本运算(1)两个连续信号的相加在MATLAB 中要实现两个连续信号f1(t)、f2(t)的相加,可用如下语句:x=f1+f2 % x(t)= f1(t)+f2(t)(2)两个连续信号的相乘在MATLAB 中要实现两个连续信号f1(t)、f2(t)的__________相乘,可用如下语句:x=f1*f2 % x(t)= f1(t) f2(t)(3)连续信号的平移要实现连续信号f(t)向右平移t0,MATLAB 语句格式为:x=subs(f,t,t-t0) % x(t)= f(t-t0)(4)连续信号的反转要实现连续信号f(t)的反转,MATLAB 语句格式为:x=subs(f,t,-t) % x(t)= f(-t)(5)连续信号的尺度变换要实现连续信号f(t)的尺度变换,MATLAB 语句格式为:x=subs(f,t,a*t) % x(t)= f(at)要实现连续信号f(t)的平移、尺度变换的综合运算,MATLAB 语句格式为:x=subs(f,t,a*t-b) % x(t)= f(at-b)(6) 连续信号的卷积运算由于MATLAB 运算的特点,两个连续信号f1(t)、f2(t)的卷积f(t)=f1(t)*f2(t),用MATLAB 实现的过程应为:A.将连续信号f1(t)、f2(t)以时间间隔Δ进行取样,得离散序列f1(kΔ)、f2(kΔ);B.构造f1(kΔ)、f2(kΔ)与相对应的时间向量k1 和k2;C.调用conv()函数计算卷积积分f(t)的近似向量f(kΔ);D.构造f(kΔ)对应的时间向量k。
下面是利用MATLAB 实现连续信号卷积运算的通用函数sconv(),它在计算出卷积积分近似值的同时,还绘出f(t)的波形图。
function [f,k]=sconv(f1,f2,k1,k2,p)%计算连续信号卷积积分f(t)=f1(t)*f2(t)%f:卷积积分f(t)对应的非零值向量%k:f(t)的对应时间向量%f1,f2:f1(t),f2(t)的非零样值向量%k1,k2:f1(t),f2(t)的对应时间向量%p:取样时间间隔f=conv(f1,f2); %计算序列f1,f2 的卷积和ff=f*p;k0=k1(1)+k2(1); %计算序列f 非零样值的起点位置k3=length(f1)+length(f2)-2; %计算卷积和f 的非零样值的宽度k=k0:p:k3*p; %确定卷积和f 非零样值的时间向量subplot(2,2,1);plot(k1,f1); title('f1(t)'); xlabel('t'); ylabel('f1(t)');subplot(2,2,2);plot(k2,f2); title('f2(t)'); xlabel('t'); ylabel('f2(t)');subplot(2,2,3);plot(k,f); %画出卷积f(t)的波形title('f(t)=f1(t)*f2(t))'); xlabel('t'); ylabel('f(t)');h=get(gca,'position');h(3)=2.5*h(3);set(gca,'position',h) %将第三个子图的横坐标扩展为原来的2.5 倍4. 信号的傅立叶变换与反变换1)直接调用专用函数法:fourier()和ifourier()2)数值计算实现法:近似计算三. 实验内容及结论:1. 调试例1-33、例1-34、例1-35 和例1-36,分析说明各题采用什么实现方法及注意事项,然后不采用符号运算表示法而用函数heaviside()或stepfun()重新实现例1-35。
close all:关闭打开的所有图形窗口clear:清空环境变量clc:清除当前command区域的命令plot():绘图命令ezplot():绘制符号表达式的波形figure():创建一个用来显示图形输出的窗口对象dirac():冲击信号函数heaviside():单位阶跃函数stepfun():门信号函数sign():符号函数ones(n):根据n的值,返回一个长度为n的向量(每个元素均为1)sym():s=sym(a)将非符号对象a转换为符号对象并储存在符号变量s中axis([xmin xmax ymin ymax]):设定图形坐标注意事项:在使用函数式注意用法,注意调用格式。
tcos(t)/ttheaviside(t+2)-3 heaviside(t-3)1-33 写函数,直接绘制图形。
close all ;%关闭打开的所有图形窗口 clear; %清空环境变量clc; %清除当前command 区域的命令 t1=0:0.01:10; x1=sin(t1); figure(1); plot(t1,x1); grid on ; t2=0:0.5:10; x2=cos(t2); hold on ; plot(t2,x2); legend('sin','cos');1-34 绘制符号表达式的图形。
close all ; clear; clc; syms t ; x=cos(t)/t; figure(1); ezplot(x,[-10,10]);1-35 绘制符号表达式的图形。
close all ; clear; clc; syms t ;f=sym('heaviside(t+2)-3*heaviside(t-3)'); ezplot(f,[-5,5]);1-36 直接绘制符号函数的图案,并规定坐标范围。
close all ; clear; clc; t=-5:0.01:5; x=sign(t-2); s1=1/2+1/2*x; y=sign(t-3); s2=3*(1/2+1/2*y); figure(1); plot(t,s1-s2);f1信号波形时间t/sf2信号波形时间t/sfi 和f2信号卷积结果时间t/ststepfun(t+2,0)-3 stepfun(t-3,0)grid on ;axis([-5,5,-3,2.5]);1-35改close all ; clear; clc;t=-10:0.01:10; syms t ;f=sym('stepfun(t+2,0)-3*stepfun(t-3,0)'); ezplot(f,[-5,5]); figure(1) plot(t,f1);2. 调试例1-37,说明卷积积分的实现方法及注意事项。
注意事项:在使用conv ()函数时,先定义时间间隔向量,在进行函数调用。
1-37 通过用conv ()函数实现卷积积分。
conv (f1,f2):卷积运算函数 subplot (m ,n ,p ):将多个图一个页面上,m 为行数,n 为列数,p 为位置顺序close all ;clear;clc; tspan=0.01; t1=0:tspan:3.5; t1len=length(t1); t2=0:tspan:3.5; t2len=length(t2);t3=0:tspan:(t1len+t2len-2)*tspan;f1=[zeros(1,length([0:tspan:(1-0.01)])),3*ones(1,length([1:tspan:2])),zeros(1,lengt h([2.01:tspan:3.5]))];f2=[zeros(1,length([0:tspan:(1-0.01)])),1*ones(1,length([1:tspan:3])),zeros(1,lengt h([3.01:tspan:3.5]))]; w=conv(f1,f2); w=w*tspan; subplot(3,1,1); plot(t1,f1); title('f1信号波形'); grid on ;xlabel('时间t/s'); axis([0 7 0 4]); subplot(3,1,2); plot(t2,f2); title('f2信号波形'); grid on ;w4/w sin(w)xlabel('时间t/s'); axis([0 7 0 2]); subplot(3,1,3); plot(t3,w);title('fi 和f2信号卷积结果'); xlabel('时间t/s'); grid on ;3. 调试例1-38、例1-39、例1-40、例1-41 和例1-42,分析说明各题采用什么实现方法及其注意事项。