MATLAB的数字处理命令.docx
《MATLAB的数字处理命令.docx》由会员分享,可在线阅读,更多相关《MATLAB的数字处理命令.docx(27页珍藏版)》请在冰豆网上搜索。
![MATLAB的数字处理命令.docx](https://file1.bdocx.com/fileroot1/2022-11/27/cf378e6c-6efe-4ff4-b116-ec4c1c5c22ec/cf378e6c-6efe-4ff4-b116-ec4c1c5c22ec1.gif)
MATLAB的数字处理命令
附录1MATLAB使用简介
MATLAB(MatrixLabortary)是MathWorks公司于1982年推出的一套高性能的数值计算可视化软件。
它集数值分析、矩阵运算、信号处理和图形显示于一体,构成一个方便且界面友好的用户环境。
1、命令窗口
点击桌面上的MATLAB图标,或是点击开始程序MATLAB组中的相应程序项,运行进入MATLAB,呈现出来标题为CommandWindow的窗口就是命令窗口。
命令窗口是与MATLAB编译器相联接的主窗口,当其中显示符号“>>”时,就代表系统已处于接受命令的状态(“>>”就是命令提示符),这是就可以直接在该窗口输入所编写的命令或源程序,然后按回车键运行。
例如,在命令窗口中输入一个3*3的矩阵:
>>A=[123;456;7810]
按回车键,MATLAB就会返回如下结果:
A=
123
456
7810
要对此矩阵求逆,只需输入:
>>B=inv(A)
然后按回车键,MATLAB就会返回相应结果:
B=
-0.6667-1.33331.0000
-0.66673.6667-2.0000
1.0000-2.00001.0000
1.1命令的编辑
使用方向键及控制键等功能键可以编辑修改已输入的命令。
例如,如果错误地输入了:
>>r=sqt(9+25)/2
由于将sqrt错拼成sqt,MATLAB就会返回如下信息:
?
?
?
Undefinedfunctionorvariable'sqt'.
可以不必重新输入一行新命令,只需简单地使用键盘上的向上方向键就可回到先前输入错误的那一行进行修改。
在MATLAB中输入的命令都会保留在一个存储器中,可以利用某些功能键调用先前输入的命令。
在MATLAB6.x和7.x版本中,还可以从专门的CommandHistory窗口中再次运行前面输入的命令。
1.2中断正在执行的命令
在MATLAB环境下可以通过按Ctrl+c组合键来中断正在执行的命令或程序。
1.3Format命令
用format命令可以控制数值在屏幕上的显示方式,通过关键字format后面跟上不同的参数,就可以设置不同的显示方式。
这些命令只会改变数值的显示,并不会对数值本身造成影响。
1.4续行符
如果命令超过一行,利用一个空格加“…”,然后按回车键就可以跳到下一行继续命令的输入。
各符号间的空格可有可无,但增加空格能增加可读性。
注意,一行中最多能输入4096个字符。
2、M文件简介
MATLAB的源程序都是以扩展名为m的文件来存放的。
这种.m文件(或称m文件)其实就是一个纯文本文件,它采用的是MATLAB所特有的一套语言及语法规则。
本书应用MATLAB进行信号处理实际上就是通过编辑和运行这种.m文件来完成的。
.m文件有两种写法,一种称为脚本(Script),就像批处理文件一样,包含了一连串的MATLAB命令,执行时依序进行;另一种称为函数(Function),与在命令行中输入的命令一样,函数能接收输入的参数,然后执行并输出结果。
2.1当前工作目录与搜索路径
在编辑和运行.m文件之前,还有一个很重要的工作要做,就是设置MATLAB的当前工作目录和搜索路径。
MATLAB有一个专门用以搜索.m的路径搜索器。
.m文件是以目录或文件夹的方式分布于硬盘的文件系统中的,有一部分.m文件的目录是MATLAB所安装目录的子目录。
如果在MATLAB命令窗口中输入字符串xxx,MATLAB编译器会按顺序尝试解释它:
(1)把xxx作为一个参数或变量去搜索;
(2)检查xxx是否为一个内置的函数;
(3)在默认的目录(即当前工作目录CurrentDirectory)下搜索文件名为xxx.m的文件;
(4)在搜索路径的所有目录中搜索文件名为xxx.m的文件。
如果多个函数具有相同的名称,那么只有搜索到的第一个函数会执行,其他函数会被认为不存在而不被执行。
2.2设置MATLAB的当前工作目录
首先建立一个目录作为自己的工作目录,用来存放自己编辑的.m源程序文件。
MATLAB中有一个当前工作目录设置,用以缺省地存放当前操作中的.m文件等(也就是说,当用户保存一个.m文件时,直接出现的文件保存对话框就是让用户保存在这个当前的目录中,当然用户也可以保存到其他目录中去)。
在Windows版本的MATLAB系统中,最初默认的当前工作目录是MATLAB安装目录下的work子目录,它也可以在桌面上MATLAB快捷方式中设定:
在MATLAB快捷方式上单击鼠标右键,再选择“属性”,通过修改“起始位置”在改变当前工作目录。
也可以采用以下方法设置当前工作目录:
(1)对于MATLAB6.x或7.x版本,直接点命令窗口的上排工具栏右边CurrentDirectory文本框边上的“…”按钮,将建立的自己的工作目录设为当前工作目录。
(2)通过在命令窗口中输入类似于DOS下的cd命令来似的MATLAB系统的当前工作目录转到所需的目录中去。
比如:
输入“cdc:
\matlab”命令即刻将当前的工作目录设为c:
\matlab目录。
2.3MATLAB搜索路径
path(path,s)命令,添加一个目录s到当前搜索路径中去。
addpaths同上面的命令一样。
rmpaths:
删除搜索路径中的s目录。
在MATLAB6.x或7.x版本中,还可以通过菜单File中的SetPath来添加路径。
2.4设置当前工作目录及搜索路径的必要性
设置当前工作目录及搜索路径的好处在于,以后在MATLAB中就可以直接调出所编的.m文件,比如只需输入.m的文件名即可运行,不必给出全部路径,因为MATLAB系统会按照前面我们提到过的顺序来自动搜索并找到这个.m源文件的准确位置。
当你输入一个.m文件名运行它时,MATLAB是先到一设置好的得当前工作目录中去寻找该.m文件,如果没有找到,MATLAB再到一设置好的搜索路径的目录列表中去查找,按从上到下、从高到底的顺序一个目录一个目录地去寻找,找到则立即执行,没有找到则报错提示。
2.5.M文件的编辑和运行
2.5.1.M文件的建立和保存
因为.m文件实际上是一个纯文本文件,因此它可以用任何纯文本编辑器进行编辑,比如记事本等,但在MATLAB自带的编辑器(编辑/调试器,Editor/Debugger)中编辑最为方便,并且便于运行。
新建.m文件的方法是:
在命令窗口中点击File菜单中的New→M-file,或直接点击上面一排工具栏中最左边的空白纸“NewM-file”按钮。
或者直接在命令窗口中输入edit命令,就可以打开空白的MATLAB编辑/调试器窗口,开始编写并最后保存.m文件了。
注意:
保存.m文件所用的文件名不能以数字开头,其中不能包含中文字,也不能包含+-^空格等特殊字符(但可以包含下划线),也不能与当前工作空间中的参数、变量、元素同名,而且也不能与MATLAB系统固有的内部函数(如sin,exp等)同名,否则运行时会出错或者得不到所希望的结果。
2.5.2文件的编辑和查看
假定要进行编辑的.m文件的文件名为aaa.m,在MATLAB命令窗口中直接输入editaaa或editaaa.m即可打开aaa.m文件进行编辑和查看。
MATLAB编辑器提供彩色高亮显示的功能,所输入的文字会自动根据其文字特性而以不同的颜色显示:
说明与注释-----绿色;关键字---蓝色;未完成的字符串---红色;已完成的字符串---棕色;其他文字----黑色。
如果只要查看aaa.m的源代码,可用typeaaa即可。
2.5.3M文件的运行:
直接在命令窗口中输入文件名。
3、在线帮助
3.1help命令
当你读程序时不知一个函数是什么意思时,采用该命令。
比如,你不知道sqrt是什么意思,可以在命令窗口中输入:
>>helpsqrt
命令窗口会显示:
SQRTSquareroot.
SQRT(X)isthesquarerootoftheelementsofX.Complex
resultsareproducedifXisnotpositive.
3.2lookfor命令
当你想拟合某种数据而不知用那个函数时,你可以查与“fit”有关的函数,输入
>>lookforfit
MATLAB会显示所有与fit有关的函数及解释:
GRIDDATADatagriddingandsurfacefitting.
GRIDDATA3Datagriddingandhyper-surfacefittingfor3-dimensionaldata.
GRIDDATANDatagriddingandhyper-surfacefitting(dimension>=2).
POLYFITFitpolynomialtodata.
…
你可以选择与你有关的函数应用。
4、流程控制:
4.1if语句
if语句用来检查逻辑运算、逻辑函数、逻辑表达式的真假,若为真,则执行下面的命令或运算,否则跳过下面的命令或运算块。
If语句的写法为:
if逻辑表达式
运算命令
end
当条件符合时,MATLAB会执行运算命令,这组执行命令的结束必须用end关键字来表示。
如果想让运算命令在相反的条件下才执行,则可以使用else关键字,其写法为:
if逻辑表达式
运算命令一
else
运算命令二
end
在MATLAB中也可用elseif关键字来写嵌套条件判断式,其写法为:
if逻辑表达式一
运算命令一
elseif逻辑表达式二
运算命令二
elseif逻辑表达式三
运算命令三
….
end
4.2switch语句
switch语句是另一种流程控制方法。
在一个程序中,如果必须针对某个变量或逻辑表达式的值来做多种不同的执行,则switch语句比if语句更为方便,而且合理使用switch语句也可以使程序更具有可读性。
Switch语句的语法为:
Switch分支条件(数值或字符串)
Case分支一
运算命令一
case分支二
运算命令二
….
Otherwise
运算命令N
end
由上可见,在基本的switch语句中包含下列元素:
switch:
switch语句的开始,后面紧跟着分支条件。
分支条件可以是一个变量、函数或表达式。
case:
依照switch语句中分支条件的值,不同的case可以定义不同的运算命令。
而紧跟在case后面的就是此case的分支条件值,之后再跟一个或一串运算命令。
otherwise:
若不符合所有case的条件,则程序会执行otherwise后面的运算命令。
end:
switch语句的结束。
4.3while语句
循环的功能在于它可以大量减少重复的程序代码,使程序模块化,并且能强化程序功能。
例如,要计算n!
,在没有实现循环功能的情况下,可能的写法为:
n!
=1*2*3*…*n。
有了循环的功能之后,就可以这样编写:
p=1;x=1;%初始化
p=p*x;x=x+1;%重复作下面的命令,直至x=n
如果需要重复执行某段程序,while和for语句都可以提供这种功能。
While的基本语法如下:
运算命令一
while循环条件
运算命令二
end
其中循环条件也可以是一个数组,如果该数组为空,MATLAB会终止该循环。
4.4for语句
for语句也是循环语句,它用于事先知道循环需要执行几次的情况;如果不知道需要执行几次,则使用while语句。
For语句的一般语法如下:
for计数器=初始值:
增值:
终止值
运算命令
end
该循环会依照计数器的值来决定运算命令的循环次数,其方法是:
一开始计数器设定为初始值,并判断其值是否大于终止值,只有不大于终止值才执行下面的运算命令;下次循环将计数器加上增量,重复对于是否大于终止值的判断,直至计数器大于终止值时跳出循环。
其中如果不给定增量,MATLAB自动取1。
5、数据和函数的可视化
MATLAB中具有丰富的图形绘制函数,包括二维图形绘制、三维图形绘制及通用工具函数等,同时还包括一些专业绘图函数,如绘制条形图、箭形图及等高图等,因而具有强大的绘图功能。
5.1plot基本调用格式
(1)plot(X,’s’)
X为实向量时,以该向量元素的下标为横坐标,元素值为纵坐标,绘出一条连续曲线。
X为实矩阵时,则按列绘制每列元素值相对其下标的曲线。
图中曲线数等于X矩阵的列数。
X为复数矩阵时,则按列分别以元素实部和虚部为纵横坐标绘制多条曲线。
s为用来制定线型、色彩、数据点形状的选项字符串。
(2)plot(X,Y,’s’)
X,Y为同维向量时,绘制以X,Y元素为横、纵坐标的曲线
X为向量,Y为n维矩阵时,绘制多条不同的曲线。
X为这些曲线共同的横坐标。
X为矩阵,Y为向量时,情况与上述相同,只是曲线以Y为共同的纵坐标。
(3)plot(X1,Y1,’s1’,X2,Y2,’s2’)
在一幅图中分别绘制X1,Y1曲线和X2,Y2曲线。
5.2坐标轴设置
在创建图形时,用户可以制定坐标的范围,数据间隔及坐标名称。
用命令axis可以控制坐标轴的刻度和形式。
常用格式如下:
axis([Xmin,Xmax,Ymin,Ymax])
5.3图形标志
图形标志包括图名(Title)、坐标轴名(Label)、图形注释(text)和图例(legend)。
常用格式如下:
title(s)书写图名
xlabel(s)横坐标轴名
ylabel(s)纵坐标轴名
legend(s1,s2,…)绘制曲线所用线形、色彩或数据点形状的图例
text(xt,yt,s)在图面(xt,yt)坐标处书写字符注释
5.4多子图
MATLAB允许用户在同一幅图形窗里布置几幅独立的子图,具体指令为:
Subplot(m,n,k)使m*n幅子图中的第k幅成为当前图
Subplot(m,n,k)的含义是:
图形窗中有m*n幅子图。
K是子图的编号。
子图的序号编排原则是:
左上方为第一幅,向右向下依次排号。
该指令形式产生的子图分割完全按默认自动执行。
subplot产生的子图彼此独立,所有绘图指令都可以在子图中运用。
附录2MATLAB信号处理工具箱函数
函数
说明
波形产生和绘图
chirp
产生扫描频率余弦
diric
产生Dirichlet或周期sinc信号
gauspuls
产生高斯调制正弦脉冲
rulstran
产生脉冲串
rectpuls
产生非周期矩形信号
sawtooth
产生锯齿波或三角波
sinc
产生sinc信号
square
产生方波信号
strips
产生条图
tripuls
产生非周期三角波
滤波器分析与实现
abs
绝对值
angle
相位角
conv
卷积和多项式乘法
conv2
二维卷积
fftfilt
基于FFT重叠加法的数据滤波
filter
递归(IIR)或非递归(FIR)滤波器的数据滤波
filter2
二维数字滤波
filtfilt
零相位数字滤波
filtic
函数filter初始条件确定
freqs
模拟滤波器频率响应
frespace
频率响应的频率空间设置
freqz
数字滤波器频率响应
grpdelay
群延迟
impz
数字滤波器的脉冲响应
latcfilt
格型梯形滤波器的实现
unwrap
相位角展开
zplane
零极点图
IIR滤波器设计----经典和直接法
besself
Bessel(贝塞尔)模拟滤波器设计
butter
Butterworth滤波器设计
cheby1
ChebyshevI型滤波器设计
cheby2
ChebyshevII型滤波器设计
ellip
椭圆滤波器设计
maxflat
最大平坦Butterworth滤波器的设计
yulewalk
递归数字滤波器设计
IIR滤波器阶数的选择
buttord
Butterworth型滤波器阶数的选择
cheb1ord
ChebyshevI型滤波器阶数的选择
cheb2ord
ChebyshevII型滤波器阶数的选择
ellipord
椭圆滤波器阶次的选择
FIR滤波器设计
cremez
复响应和非线性相位等波纹FIR滤波器设计
fir1
基于窗函数的有限冲激响应滤波器设计――标准响应
fir2
基于窗函数的有限冲激响应滤波器设计――任意响应
fircls
多频带滤波的最小方差FIR滤波器设计
fircls1
低通和高通线性相位FIR滤波器的最小方差设计
firls
最小线性相位滤波器设计
firrcos
升余弦FIR滤波器设计
intfilt
插值FIR滤波器设计
kaiserord
用凯塞(Kaiser)窗估计函数fir1参数
remez
Parks-McClellan优化滤波器设计
remezord
Parks-McClellan优化滤波器阶估计
变换
czt
Chirpz-变换
dct
离散余弦变换
dftmtx
离散傅里叶变换矩阵
fft
一维FFT
fft2
二维FFT
fftshift
函数fft和fft2输出的重新排列
hilbert
希尔伯特(Hibert)变换
idct
离散余弦逆变换
ifft
一维逆FFT
ifft2
二维逆FFT
统计信号处理
cohere
两个信号相干函数估计
corrcoef
相关系数矩阵
cov
协方差矩阵
csd
互功率谱密度估计(CSD)
pmem
最大熵功率谱估计
pmtm
多窗口功率谱估计(MTM)
pmusic
特征值向量功率谱估计(MUSIC)
psd
自功率谱密度估计
tfe
传递函数估计
xcorr
互相关函数估计
xcorr2
二维互相关函数估计
xcov
互协方差函数估计
窗函数
bartlett
巴特利斯(Bartlett)窗
blackman
勃莱克曼(Blackman)窗
boxcar
矩形窗
chebwin
切比雪夫(Chebyshev)窗
hamming
哈明(Hamming)窗
hanning
汉宁(Hanning)窗
kaiser
凯塞(Kaiser)窗
triang
三角窗
参数建模
invfreqs
由频率响应辨识连续时间(模拟)滤波器
invfreqz
由频率响应辨识响应离散时间滤波器
levinson
Levinson-Durbin递归算法
lpc
线性预测系统
prony
Prong法的时域IIR滤波器设计
stmcb
利用Steiglitz-McBride迭代法求线性模型
特殊运算
cceps
复时谱分析
cplxpair
重新排列组合复数
decimate
降低序列的采样频率
deconv
解卷积和多项式除法
demod
通信仿真中的解调制
detrend
去除线性趋势
dpss
Slepian序列
dpssclear
去除数据库Slepian序列
dpssdir
从数据库目录消去Slepian序列
dpssload
从数据库调入Slepian序列
dpsssave
Slepian序列存入数据库
icceps
倒复时谱
interp
整数倍提高采样速率
medfilt1
一维中值滤波
modulate
通讯仿真调制
polystab
稳定多项式
rceps
实时谱和最小相位重构
resample
任意倍数改变采样速率
specgram
频谱分析
upfirdn
利用FIR滤波器转换采样
vco
电压控制振荡器
besselap
Bessel模拟低通滤波器原型设计
buttap
Butterworth模拟低通滤波器原型设计
cheb1ap
ChevbyshevI型模拟低通滤波器原型设计
cheb2ap
ChevbyshevII型模拟低通滤波器原型设计
ellipap
椭圆低通滤波器原型设计
频率变换
lp2bp
低通至带通模拟滤波器变换
lp2bs
低通至带阻模拟滤波器变换
lp2hp
低通至高通模拟滤波器变换
lp2lp
低通至低通模拟滤波器变换
滤波器离散变换
bilinear
双线性变换
impinvar
冲激不变法的模拟至数字滤波器变换
交互式工具
sptool
交互式信号、滤波器和频谱分析工具
附录ⅡMATLAB常用命令(GeneralPurposeCommands)
变量和工作空间管理(ManagingVariablesandtheWorkspace)
clear
从内存中删除变量和函数
disp
显示文本和数组内容
length
求向量的长度
load
从磁盘中调入数据变量
save
把内存变量存入磁盘
size
求数组的维数大小
who
列出工作空间中的变量名
whos
列出工作空间中的变量详细内容
命令窗口控制命令(ControllingtheCommandWindow)
echo
显示M文件执行时是否显示命令的切换开关
format
控制输出格式
more
命令窗口分页输出的控制开关
操作环境和文件管理(WorkingwithFilesandtheOperatingEnvironment)
delete
删除文件或图形对象
diary
存储命令窗口中的操作内容
dir
列出目录
edit
编辑M文件
fileparts
生成文件的路径、文件名的版本等部分信息
fullfile
生成文件的路径和文件名的全称
matlabroot
安装MATLAB的根目录
tempname
列出临时文件名
!
执行外部应用文件
运算符和特殊算符(OperatorsandSpecialCharacters)
+
加
-
减
*
矩阵相乘
.*
数组相乘
^
矩阵求幂
.^
数组求幂
kron
张量积
\
左除
/
右除
./
数组右除
.\
数组左除
:
冒号运算符
[]
中括号,生成数组
{}
大括号,生成细胞
.
小数点
…
续行符
逗号
;
分号
%
注释号
’
共轭转置符
.’
非共轭转置符
=
赋值符号
==
等号
<>
关系符
&
逻辑和
|
逻辑与
~
逻辑非
xor
逻辑异或
流程控制(ControlFlow)
break
中断执行for或while循环
case
switch结构关键字
catch
开始捕捉模块
else
条件执行语句
elseif
条件执行语句
end
for、whiles、witch和if的结束语句或标志
error
显示错误信息
for
指定循环次数的执行语句
if
条件执行语句
otherwise
switch语句的默认部分
return
返回主调函数
switch
开关语句
warning
显示警告信息
while
无规定次数循环语句
交互输入(InteractiveInput)
input
提醒用户输入
keyboa