附录A用MatLab进行数字信号处理
一、Matlab简介
在科学研究和工程应用中,往往要进行大量的数学计算,这些运算一般来说难以用手工
精确和快捷地进行,而要借助计算机编制相应的程序做近似计算。目前流行用Basic、Fortra
和c语言编制计算程序,既需要对有关算法有深刻的了解,还需要熟练地掌握所用语言的语
法及编程技巧。在本讲义的附录一中,提供了一部分算法的C代码,但这些功能代码段仅
仅是在数字信号处理过程中一个很小的部分。一方面实验时间有限,另一方面,各个专业的
同学对编程有不同程度的要求。往往实验的大部分时间用来调试程序,真正用于理解课程内
容的时间相对被压缩。
为克服上述困难,美国Mathwork公司于1967年推出了MatrixLaboratory(缩写为
Matlab)软件包,并不断更新和扩充,是一种功能强、效率高便于进行科学和工程计算的交
互式软件包。其中包括:一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化
等应用程序,并集应用程序和图形于一便于使用的集成环境中。在此环境下所解问题的
Matlab语言表述形式和其数学表达形式相同,不需要按传统的方法编程。
虽然Matlab作为一种新的计算机语言,但由于使用Matlab编程运算与人进行科学计算
的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortra和C等那样难
于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。Matlab语言具有编程
效率高,易学易懂;使用方便;绘图方便等一系列优点。
二、MatLab基本绘图
(一)绘图函数简介
有关MatLab运算、函数、逻辑控制等可以参考一些Matlab的书籍、或参阅多媒体通信
实验室主页中有关MatLab的部分,在本讲义中不再赘述。这里介绍以下MatLab下二维图
形的绘制。下表是MatLab中不同绘图函数的名称和功能简介:
函数名称函数功能介绍函数名称函数功能介绍
Bar长条图errorbar图形加上误差范围
Fplot较精确的函数图形polar极座标图
Hist累计图rose极座标累计图
Stairs阶梯图stem针状图
Fill实心图feather羽毛图
Compass罗盘图Quiver向量场图
Contour在x-y平面绘制等位线图Gplot绘拓扑图
Loglog双对数坐标曲线Pcolor伪彩图
Semilogxx轴对数坐标曲线Semilogyy轴对数坐标曲线
1
(二)Stem函数绘图
各种不同的绘图函数分别适用于不同的场合,使用“stem”绘制针状图最简单,从附录
中提供的MatLab原代码可以看出,只需要将需要绘制的数据存放在一个数组中,然后将这
个数组作为参数传递给“stem”函数就可以得到输出图形。例如,下面的代码可以绘制正弦
函数的图形:
n=1:50;%定义序列的长度是50
x=zeros(1,50);%注意:MATLAB中数组下标从1开始
x(1)=1;%冲击函数
stem(x);%绘制函数图形
得到的函数图形如下图所示:
(三)Plot函数绘图
当然,在某些时候针状图的显示效果并不是非常理想,这时候,我们通常采用“plot”
函数绘制图形。“plot”函数功能非常强大,输入以下内容
x=-pi:.1:pi;
y=sin(x);
plot(x,y)
可以绘制正弦函数的图形如下图所示:
如果输入以下代码,则可以同时得到正弦函数和余弦函数的图形。
plot(x,sin(x),