_实验一 数据可视化与绘制函数图像

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一数据可视化与绘制函数图像

1.数据可视化

人们很难直接从一大堆原始的离散数据中体会到它们的含义,画出图形却能使人们用视觉器官直接感受到数据的许多内在本质。因此,数据可视化是人们研究科学、认识世界所不可缺少的手段。作为一个优秀的科技软件,MATLAB不仅在数值计算上独占鳌头,而且在数据可视化上也有上乘的表现。MATLAB可以给出数据的二维、三维乃至四维的图形表现,是一种非常方便作函数图像的工具。

信号是消息的载体,是消息的一种表现形式。信号可以描述范围极为广泛的一类物理现象,在日常生活和科学研究中占有极其重要的地位。在数学上,信号可以表示为一个或多个变量的函数。信号按照自变量取值是否连续可以分为连续时间信号和离散时间信号。若对信号进行时域分析,其中比较重要的就是对信号随时间变化的二维曲线图进行分析。对于简单的信号来说,我们可以用手工绘制其波形,但是对于复杂的信号来说,手工绘制极其困难,其精度也不尽如人意。然而这些对于具有强大图形处理功能的MATLAB来说,我们可以比较容易的绘出函数图形,使读者能够对信号的特征有一个比较直观的印象。

2.MATLAB如何表示信号

在matlab中有两种方法来表示信号,一种是用向量来表示,另一种是用符号运算的方法。用适当的方法表示出信号后,我们就可以利用matlab中的绘图命令绘制出直观的信号波形。下面我们将结合具体的例子,分别简单介绍一下两种不同的方法。

2.1.表示连续时间信号

从严格意义上来说,matlab并不能处理连续信号。因为我们都知道计算机的数值精度有限、内存容量有限,所以没有办法严格的表示在时间上和数值上具有无限精度的连续信号。但是在工程应用的时候,都允许存在一定的误差,只要满足允许的误差要求,我们可以对连续信号进行近似的处理。Matlab表示连续时间信号有两种方法,我们分别介绍如下。

2.1.1.向量表示法

向量表示法实际上是根据采样定理,使用间隔足够小的等间隔采样值来表示连续时间信号,在matlab中通常都将这些采样值保存在一个数组向量中。有关matlab中数组与矩阵计算的内容请参看附录,或通过察看demo->matlab->matrices中给出的例子进行学习。

例:表示并画出信号

t = -10:1.5:10 %做图区域为-10到10,采样间隔为1.5

f = sin(t>./t %’./’为点除运算,即数组对应元素作除法

plot(t,f> %matlab的绘图语句之一

title(‘f(t>=Sinc(t>’> %给绘出的图形增加标题

xlabel(‘t’> %给横坐标增加文字说明

axis([-10,10,-0.4,1.1]> %设置绘图窗口的坐标区域运行结果如图<1)所示,效果不是很好。我们可以改变采样的间隔t,使间隔更小一点比如:t = -10:0.02:10,再次运行结果如图<2)所示,现在效果就好多了。

在这个例子中我们使用了matlab 的有关绘图语句plot ,title ,xlabel ,axis 它们的用法请查阅matlab

联机帮助,或附录中的内容。

2.1.2. 符号运算表示法

首先我们需要知道什么是符号运算,我们先看一个例子,在高等数学中积分运算是经常遇到的,例如我们需要求函数的不定积分即,如果用计算机来求解就只能依靠符号计算方法了。求解这个积分的matlab 程序如下: f = sym(‘sin(x>^2’>。 %定义符号变量f ,代表数学公式sin(x>^2 intf = int(f> %int(>为matlab 中求符号积分的函数 结果为intf =-1/2*cos(x>*sin(x>+1/2*x ,即

,我们还可以化简,使用如下语句:

intf = simple(intf> %simple(>是用来化简符号公式的函数

结果为intf =-1/4*sin(2*x>+1/2*x , 即

如果使用符号运算表示法表示信号,则绘图语句应该使用ezplot(>函数,我们通过具体的例子来看看它的使用方法。

例:绘出信号f(t> = sin(pi/4*t>的图像

f = sym(‘sin(pi/4*t>’> %定义符号表达式,代表f(t>

ezplot(f,[-16,16]> %指定t 的范围,绘制函数f(t>的图像 结果如图所示:

在这个例子中,我们用到了符号预算中的下列函数sym(>,int(>,simple(>,ezplot(>有关它们的详细介绍和具体用法请参考matlab帮助,或后面的附录。

2.2.离散信号的表示方法

一般说来,离散时间信号可以用f(k>表示<注:这里的记号与《信号与系统》书中不一样,但实质是相同的),其中变量k为整数,代表离散的采样时间点。例如:f(k>={ …, f(-3>, f(-2>, f(-1>, f(0>, f(1>, f(2>, … }

在matlab中使用一个向量f即可以表示一个有限长度的序列,无限长的序列是计算机无法处理的,我们必须将无限长的序列进行截断处理。但是用一个向量f来表示序列<向量的下标是从1开始的自然数),只是保留了各个采样点的数字,而数值出现的时间点信息被丢失了。所以要完整表示离散信号需要用两个向量。

如序列:f(k>={ f(-3>=1, f(-2>=2, f(-1>=-1, f(0>=3, f(1>=2, f(2>=4, f(3>=-1}

在matlab中应该使用两个向量来表示:

k = [-3, -2, -1, 0, 1, 2, 3] 表示时间点

f = [1, 2, -1, 3, 2, 4, -1] 表示时间点上的数值

绘制离散时间信号的图像应该使用matlab中的stem(>函数,例如:

stem(k, f, ‘filled’>,

axis([-4, 4, -1.5, 4.5]>

结果如下:

3.matlab信号表示与绘图举例

例<1):绘出连续时间的单位阶越信号u(t>

先考虑使用向量法,我们先创建自己一个存在于matlab\work目录下的Heaviside(>函数,该文件内容如下:

相关文档
最新文档