最有影响力的编程图书

编程问答社区StackOverflow上最受欢迎的问题之一是每个程序员都应该读的编程图书,Internet Security博客总结了其中十本最有影响力的编程图书,包括: 《代码大全》第二版,《程序员修炼之道》,《计算机程序的构造和解释》第二版,《C程序设计语言》,《算法导论》,《重构:改进现有代码设计》,《设计模式》,《人月神话:软件项目管理之道》,《计算机程序设计艺术》第一卷第三版,《编译器:原理、技术和工具》。

从:solidot

Advertisements

MATLAB中的一些小技巧

MATLAB中的一些小技巧

1. Ctrl+C 中断正在执行的操作
如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断。MATLAB这时可能正疲于应付,响应会有些滞后。

2. figure命令新建一个绘图窗口
figure 可以打开一个空的绘图窗口,接下的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。当有多个figure窗口时,在命令窗口中执行如Plot等命 令将覆盖当前figure窗口中的对象。所谓的当前figure窗口,也就是最后一次查看的窗口(可以用命令gcf得到)。
figure(N),将编号为N的窗口置为当前figure,出现在所有窗口的最前面,如果该窗口不存在,则新建一个编号为N的空白figure。

3. 注释掉一段程序:%{、%}。
经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 %和{ 的组合。输入%{后,后面的代码都会变绿,在注释结束的地方再加上 %} 。
也可以选中要注释内容,在右键菜单中选择Comment (Uncomment去掉注释标记),或使用快捷键Ctrl+R。
将光标放在需要注释的行中,按Ctrl+R,将该行变为注释。取消注释也是一样的,快捷键为Ctrl+T。

4. doc 命令名,打开命令的帮助文档
与help命令不同,帮助文档MATLAB Help中对命令的描述更详细,往往还有一些例子,更便于理解。

5. clc 清屏
清除命令窗口中的所有输入和输出信息,不影响命令的历史记录。

6. clear 和clear all
clear 变量名:可以清除workspace中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。
clear all 清除所有的变量,使workspace一无所有,当重新开始一次算法验证时,最好执行一次,让workspace中的变量一目了然。

7. close all
如果开了多个绘图窗口,用这个命令将它们一起关掉。

8. 上下光标键↑↓
在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。如果输入命令的前几个字母如 [row, col] =,再使用光标键,则只会选择以这些字母开始的命令

9. Tab补全
对名称记得不太清楚的命令,可以输入开头的几个字母,然后按Tab键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。

10. cell模式
在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗 口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。
执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。
cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。

11. 获取文件列表,批处理
MATLAB内置了一些文件操作命令, 例如cd(切换工作目录),dir(同ls,显示目录内文件列表)等。dir命令可以返回目录中的文件和文件夹列表,存在一个结构体数组中。如果需要对一 些数据文件进行批处理,而文件名又没有一定的规律,你可能需要借助于这个命令。

MATLAB函数调用

使用MATLAB编程的时候,如果代码很多最好是分模块来写程序,把程序分成几个函数来写,然后再调用这些函数,这样思路会更加清淅。

那么MATLBA是怎么调用函数的呢??如何调用函数呢??
调用函数的方法用很多种,下面我介绍一种比较简单的方法。

1.首先把所有的函数都写在同一M文件里。
2.在这一M文件里的各个函数可以相互调用。
举例:
新建一M文件,文件名:test.m
在M文件里写两个函数
第一个函数
function maintest(hObject, eventdata, handles)
a=a+1;
if(a)>1
firce(hObject, eventdata, handles) %调用下面那个函数

第二个函数
function firce(hObject, eventdata, handles)
xxxxx %你的代码
xxxxx %你的代码
xxxxx %你的代码

在上面两个函数中,其中function是关键字,固定的不用更改。
maintest 和 firce 是函数名,你可以另取名字
(hObject, eventdata, handles)这个是参数,不用管它直接这样写就行

总结:
定义函数
function xxx(函数名)(hObject, eventdata, handles)
xxxx %在这写函数的代码

这样就可以完成一个函数的名义

调用函数:
要调用上面定义的函数怎么办呢?
只需写xxx(函数名)(hObject, eventdata, handles)
这样就可以调用了.
如上例所示。

MATLAB 函数编写方法与应用

试探结构:

MATLAB 从 5.2 版本开始提供了一种新的试探式语句结构,其一般的形式为:

try
  语句段1
catch
  语句段2
end

本语句结构首先试探性地执行语句段 1,如果在此段语句执行过程中出现错误,则将错误信息赋给保留的 lasterr 变量,并放弃这段语句,转而执行语句段 2 中的语句。这种新的语句结构是 C 等语言中所没有的。

MATLAB 函数编写方法与应用

 所谓 MATLAB 程序,大致分为两类:M 脚本文件 (M-Script) 和 M 函数 (M-function), 它们均是普通的 ASCII 码构成的文件。M 脚本文件中包含一族由 MATLAB 语言所支持的语句,它类似于 DOS 下的批处理文件,它的执行方式很简单,用户只需在 MATLAB 的提示符 >> 下键入该 M 文件的文件名,这样 MATLAB 就会自动执行该 M 文件中的各条语句,并将结果直接返回到 MATLAB 的工作空间。M 函数格式是 MATLAB 程序设计的主流,一般情况下, 不建议您使用 M 脚本文件格式编程。

 MATLAB 的 M 函数是由 function 语句引导的,其基本格式如下:

function [返回变量列表] = 函数名 (输入变量列表) 
注释说明语句段, 由 % 引导 
输入、返回变量格式的检测
函数体语句 

 这里输入和返回变量的实际个数分别由 nargin 和 nargout 两个 MATLAB 保留变量来给出,只要进入该函数,MATLAB 就将自动生成这两个变量,不论您是否直接使用这两个变量。返回变量如果多于 1 个,则应该用方括号将它们括起来,否则可以省去方括号。输入变量和返回变量之间用逗号来分割。注释语句段的每行语句都应该由百分号 % 引导,百分号后面的内容不执行,只起注释作用。用户采用 help 命令则可以显示出来注释语句段的内容。此外,正规的变量个数检测也是必要的。如果输入或返回变量格式不正确,则应该给出相应的提示。我们将通过下面的例子来演示函数编程的格式与方法。

〖例 3-〗假设我们想生成一个 nxm 阶的 Hilbert 矩阵, 它的第 i 行第 j 列的元素值为 1/(i+j-1)。我们想在编写的函数中实现下面几点:

  • 如果只给出一个输入参数,则会自动生成一个方阵,即令 m=n
  • 在函数中给出合适的帮助信息,包括基本功能、调用方式和参数说明
  • 检测输入和返回变量的个数,如果有错误则给出错误信息

 如果调用时不要求返回变量,则将显示结果矩阵。其实在编写程序时养成一个好的习惯,无论对程序设计者还是对程序的维护者、使用者都是大有裨益的。

 采用 MATLAB 函数编写格式和上述要求,我们可以编写出一个函数

function A=myhilb(n, m)
%MYHILB a demonstrative M-function.
% A=MYHILB(N, M) generates an N by M Hilbert matrix A.
% A=MYHILB(N) generates an N by N square Hilbert matrix.
% MYHILB(N,M) displays ONLY the Hilbert matrix, but do not return any
% matrix back to the calling function.
%
%See also: HILB.

% Designed by Professor Dingyu XUE, Northeastern University, PRC
% 5 April, 1995, Last modified by DYX at 21 March, 2000
if nargout>1, error(‘Too many output arguments.’); end
if nargin==1, m=n;
elseif nargin==0 | nargin>2
error(‘Wrong number of iutput arguments.’);
end
A1=zeros(n,m);
for i=1: n
for j=1:m
A1(i,j)=1/(i+j-1);
end, end
if nargout==1, A=A1; elseif nargout==0, disp(A1); end

这样规范编写的函数用 help 命令可以显示出其帮助信息:

>> help myhilb
MYHILB a demonstrative M-function.
A=MYHILB(N, M) generates an N by M Hilbert matrix A.
A=MYHILB(N) generates an N by N square Hilbert matrix.
MYHILB(N,M) displays ONLY the Hilbert matrix, but do not return any
matrix back to the calling function.

See also: HILB.

 有了函数之后,可以采用下面的各种方法来调用它,并产生出所需的结果。

>> A=myhilb(3,4)
A =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
>> A=myhilb(4)
A =
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429
>> myhilb(4)
1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
0.2500 0.2000 0.1667 0.1429

MATLAB 工具箱编写技巧

 放入一个目录中的为某种目的专门编写的一组 MATLAB 函数就可以组成一个工具箱。 从某种意义上说,任何一个 MATLAB 语言的使用者都可以是工具箱的作者。在一个工具箱中,应该有一个名为 Contents.m 的文件,用来描述工具箱中所有 MATLAB 函数的名称和意义。在该文件中第 1 行应该给出该工具箱的名称,在第 2
行中给出该工具箱的版本与修改时间等信息。然后分类地给出该工具箱中各类函数的最基本功能。注意,本文件中所有的语句都应该是注释语句,由百分号 % 引导,空行也应该由 % 引导。

 另外,因为 MATLAB是一种解释性语言,所以即使在某个或某些函数中存在语法错误,但如果没执行到该语句时可能就不会发现该错误,这在一个成功的程序设计中是不能容许的。要查出某目录中所有的M函数语法错误,首先应该用 cd 命令 进入该目录,然后运行 pcode * 命令进行伪代码转换。因为该命令会将 MATLAB 函数转换成伪代码,而在转换过程中该程序将自动翻译每一条语句,所以一旦发现有语法错误,将会停止翻译,给出错误信息。改正了该语法错误后,再重新执行 pcode 命令,直到没有错误为止。至少这样会保证目录下所有的程序不含有语法错误。

Matlab命令字母表

一、常用对象操作:除了一般windows窗口的常用功能键外。
1、!dir 可以查看当前工作目录的文件。   !dir& 可以在dos状态下查看。
2、who  可以查看当前工作空间变量名,    whos 可以查看变量名细节。
3、功能键:
功能键             快捷键           说明
方向上键           Ctrl+P          返回前一行输入
方向下键           Ctrl+N          返回下一行输入
方向左键           Ctrl+B          光标向后移一个字符
方向右键           Ctrl+F          光标向前移一个字符
Ctrl+方向右键      Ctrl+R          光标向右移一个字符
Ctrl+方向左键      Ctrl+L          光标向左移一个字符
home              Ctrl+A          光标移到行首
End               Ctrl+E          光标移到行尾
Esc               Ctrl+U          清除一行
Del               Ctrl+D          清除光标所在的字符
Backspace         Ctrl+H          删除光标前一个字符                              Ctrl+K          删除到行尾
Ctrl+C          中断正在执行的命令
4、clc可以命令窗口显示的内容,但并不清除工作空间。
二、函数及运算
1、运算符:
+:加,  -:减,  *:乘,  /: 除, \:左除  ^:  幂,‘:复数的共轭转置, ():制定运算顺序。
2、常用函数表:
sin( )   正弦(变量为弧度)
Cot( )   余切(变量为弧度)
sind( )  正弦(变量为度数)
Cotd( )  余切(变量为度数)
asin( )  反正弦(返回弧度)
acot( )  反余切(返回弧度)
Asind( ) 反正弦(返回度数)
acotd( ) 反余切(返回度数)
cos( )   余弦(变量为弧度)
exp( )   指数
cosd( )  余弦(变量为度数)
log( )   对数
acos( )  余正弦(返回弧度)
log10( ) 以10为底对数
acosd( ) 余正弦(返回度数)
sqrt( )  开方
tan( )   正切(变量为弧度)
realsqrt( ) 返回非负根
tand( )  正切(变量为度数)
abs( )   取绝对值
atan( )  反正切(返回弧度)
angle( ) 返回复数的相位角
atand( ) 反正切(返回度数)
mod(x,y) 返回x/y的余数
sum(  )  向量元素求和
3、其余函数可以用help elfun和help specfun命令获得。
4、常用常数的值:
pi            3.1415926…….
realmin       最小浮点数,2^-1022
i             虚数单位
realmax       最大浮点数,(2-eps)2^1022
j             虚数单位
Inf           无限值
eps           浮点相对经度=2^-52
NaN           空值
三、数组和矩阵:
1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。
2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。
ones( )   创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
zeros()   创建一个所有元素都为0的矩阵
eye()     创建对角元素为1,其他元素为0的矩阵
diag()    根据向量创建对角矩阵,即以向量的元素为对角元素
magic()   创建魔方矩阵
rand()    创建随机矩阵,服从均匀分布
randn()   创建随机矩阵,服从正态分布
randperm()         创建随机行向量
horcat             C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
vercat             C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)
repmat(M,v,h)      将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
blkdiag(A,B)     以A,和B为块创建块对角矩阵
length             返回矩阵最长维的的长度
ndims              返回维数
numel              返回矩阵元素个数
size               返回每一维的长度,[rows,cols]=size(A)
reshape            重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。
rot90              旋转矩阵90度,逆时针方向
fliplr             沿垂轴翻转矩阵
flipud             沿水平轴翻转矩阵
transpose          沿主对角线翻转矩阵
ctranspose         转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
inv                矩阵的逆
det                矩阵的行列式值
trace              矩阵对角元素的和
norm               矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest            估计矩阵的最大范数矢量
chol               矩阵的cholesky分解
cholinc            不完全cholesky分解
lu                 LU分解
luinc              不完全LU分解
qr                 正交分解
kron(A,B)        A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间
rank               求出矩阵的刺
pinv               求伪逆矩阵
A^p                对A进行操作
A.^P               对A中的每一个元素进行操作
四、数值计算
1、线性方程组求解
(1)AX=B 的解可以用X=A\B求。XA=B的解可以用X= A/B求。如果A是m×n的矩阵,当m=n时可以找到唯一解,m<n,不定解,解中至多有m个非零元素。如果m>n,超定系统,至少找到一组 解。如果A是奇异的,且AX=B有解,可以用X=pinv(A)×B返回最小二乘解
(2)AX=b,  A=L×U,[L,U]=lu(A),  X=U\(L\b),即用LU分解求解。
(3)QR(正交)分解是将一矩阵表示为一正交矩阵和一上三角矩阵之积,A=Q×R[Q,R]=chol(A),  X=Q\(U\b)
(4)cholesky分解类似。
2、特征值
D=eig(A)返回A的所有特征值组成的矩阵。[V,D]=eig(A),还返回特征向量矩阵。
3、A=U×S×UT,[U,S]=schur(A).其中S的对角线元素为A的特征值。
4、多项式Matlab里面的多项式是以向量来表示的,其具体操作函数如下:
conv           多项式的乘法
deconv         多项式的除法,【a,b】=deconv(s),返回商和余数
poly           求多项式的系数(由已知根求多项式的系数)
polyeig        求多项式的特征值
Polyfit(x,y,n)        多项式的曲线拟合,x,y为被拟合的向量,n为拟合多项式阶数。
polyder        求多项式的一阶导数,polyder(a,b)返回ab的导数
[a,b]=polyder(a,b)返回a/b的导数。
polyint        多项式的积分
polyval        求多项式的值
polyvalm       以矩阵为变量求多项式的值
residue        部分分式展开式
roots          求多项式的根(返回所有根组成的向量)
注:用ploy(A)求出矩阵的特征多项式,然后再求其根,即为矩阵的特征值。
5、插值常用的插值函数如下:
griddata       数据网格化合曲面拟合
Griddata3      三维数据网格化合超曲面拟合
interp1        一维插值(yi=interp1(x,y,xi,’method’)Method=nearest/linear/spline/pchip/cubic
Interp2        二维插值zi=interp1(x,y,z,xi,yi’method’),bilinear
Interp3        三维插值
interpft       用快速傅立叶变换进行一维插值,help fft。
mkpp           使用分段多项式
spline         三次样条插值
pchip          分段hermit插值
6、函数最值的求解
fminbnd(‘f’,x1,x2,optiset(,)) 求f在 x1和x2之间的最小值。Optiset选项可以有‘Display’+‘iter’/’off’/’final’,分别表示显示计算过程/不显示/只显 示最后结果。fminsearch求多元函数的最小值。fzero(‘f’,x1)求一元函数的零点。X1为起始点。同样可以用上面的选项。
五、图像绘制:
1、基本绘图函数
plot            绘制二维线性图形和两个坐标轴
plot3           绘制三维线性图形和两个坐标轴
fplot           在制定区间绘制某函数的图像。fplot(‘f’,区域,线型,颜色)
loglog          绘制对数图形及两个坐标轴(两个坐标都为对数坐标)semilogx        绘制半对数坐标图形
semilogy        绘制半对数坐标图形
2、线型:   颜色           线型
y   黄色       .  圆点线           v       向下箭头
g   绿色       -.   组合           >    向右箭头
b   蓝色       +    点为加号形      <      向左箭头
m   红紫色     o    空心圆形        p      五角星形
c   蓝紫色     *    星号           h        六角星形
w   白色       .    实心小点       hold on   添加图形
r   红色       x   叉号形状        grid on  添加网格
k   黑色       s   方形             –    实线
d   菱形       —   虚线           ^ 向上箭头
3、可以用subplot(3,3,1)表示将绘图区域分为三行三列,目前使用第一区域。此时如要画不同的图形在一个窗口里,需要hold on。

=================================================================

附录1.1 管理用命令
函数名    功能描述    函数名    功能描述
addpath    增加一条搜索路径    rmpath    删除一条搜索路径
demo    运行Matlab演示程序    type    列出.M文件
doc    装入超文本文档    version    显示Matlab的版本号
help    启动联机帮助    what    列出当前目录下的有关文件
lasterr    显示最后一条信息    whatsnew    显示Matlab的新特性
lookfor    搜索关键词的帮助    which    造出函数与文件所在的目录
path    设置或查询Matlab路径

附录1.2管理变量与工作空间用命令
函数名    功能描述    函数名    功能描述
clear    删除内存中的变量与函数    pack    整理工作空间内存
disp    显示矩阵与文本    save    将工作空间中的变量存盘
length    查询向量的维数    size    查询矩阵的维数
load    从文件中装入数据    who,whos    列出工作空间中的变量名

附录1.3文件与操作系统处理命令
函数名    功能描述    函数名    功能描述
cd    改变当前工作目录    edit    编辑.M文件
delete    删除文件    matlabroot    获得Matlab的安装根目录
diary    将Matlab运行命令存盘    tempdir    获得系统的缓存目录
dir    列出当前目录的内容    tempname    获得一个缓存(temp)文件
!    执行操作系统命令

附录1.4窗口控制命令
函数名    功能描述    函数名    功能描述
echo    显示文件中的Matlab中的命令    more    控制命令窗口的输出页面
format    设置输出格式

附录1.5启动与退出命令
函数名    功能描述    函数名    功能描述
matlabrc    启动主程序    quit    退出Matlab环境
startup    Matlab自启动程序

附录2 运算符号与特殊字符附录
2.1运算符号与特殊字符
函数名    功能描述    函数名    功能描述
+    加    …    续行标志
–    减    ,    分行符(该行结果不显示)
*    矩阵乘    ;    分行符(该行结果显示)
.*    向量乘    %    注释标志
^    矩阵乘方    !    操作系统命令提示符
.^    向量乘方         矩阵转置
kron    矩阵kron积    .    向量转置
\    矩阵左除    =    赋值运算
/    矩阵右除    ==    关系运算之相等
.\    向量左除    ~=    关系运算之不等
./    向量右除    <    关系运算之小于
:    向量生成或子阵提取    <=    关系运算之小于等于
()    下标运算或参数定义    >    关系运算之大于
[]    矩阵生成    >=    关系运算之大于等于
{}         &    逻辑运算之与
.    结构字段获取符    |    逻辑运算之或
.    点乘运算,常与其他运算符联合使用(如.\)    ~    逻辑运算之非
xor    逻辑运算之异成

附录2.2逻辑函数
函数名    功能描述    函数名    功能描述
all    测试向量中所用元素是否为真    is*(一类函数)    检测向量状态.其中*表示一个确定的函数(isinf)
any    测试向量中是否有真元素    *isa    检测对象是否为某一个类的对象
exist    检验变量或文件是否定义    logical    将数字量转化为逻辑量
find    查找非零元素的下标

附录3 语言结构与调试
附录3.1编程语言
函数名    功能描述    函数名    功能描述
builtin    执行Matlab内建的函数    global    定义全局变量
eval    执行Matlab语句构成的字符串    nargchk    函数输入输出参数个数检验
feval    执行字符串指定的文件    script    Matlab语句及文件信息
function    Matlab函数定义关键词

附录3.2控制流程
函数名    功能描述    函数名    功能描述
break    中断循环执行的语句    if    条件转移语句
case    与switch结合实现多路转移    otherwise    多路转移中的缺省执行部分
else    与if一起使用的转移语句    return    返回调用函数
elseif    与if一起使用的转移语句    switch    与case结合实现多路转移
end    结束控制语句块    warning    显示警告信息
error    显示错误信息    while    循环语句
for    循环语句

附录3.3交互输入
函数名    功能描述    函数名    功能描述
input    请求输入    menu    菜单生成
keyboard    启动键盘管理    pause    暂停执行

附录3.4面向对象编程
函数名    功能描述    函数名    功能描述
class    生成对象    isa    判断对象是否属于某一类
double    转换成双精度型    superiorto    建立类的层次关系
inferiorto    建立类的层次关系    unit8    转换成8字节的无符号整数
inline    建立一个内嵌对象

附录3.5调试
函数名    功能描述    函数名    功能描述
dbclear    清除调试断点    dbstatus    列出所有断点情况
dbcont    调试继续执行    dbstep    单步执行
dbdown    改变局部工作空间内存    dbstop    设置调试断点
dbmex    启动对Mex文件的调试    sbtype    列出带命令行标号的.M文件
dbquit    退出调试模式    dbup    改变局部工作空间内容
dbstack    列出函数调用关系

附录4 基本矩阵与矩阵处理
附录4.1基本矩阵
函数名    功能描述    函数名    功能描述
eye    产生单位阵    rand    产生随机分布矩阵
linspace    构造线性分布的向量    randn    产生正态分布矩阵
logspace    构造等对数分布的向量    zeros    产生零矩阵
ones    产生元素全部为1的矩阵    :    产生向量

附录4.2特殊向量与常量
函数名    功能描述    函数名    功能描述
ans    缺省的计算结果变量    non    非数值常量常由0/0或Inf/Inf获得
computer    运行Matlab的机器类型    nargin    函数中参数输入个数
eps    精度容许误差(无穷小)    nargout    函数中输出变量个数
flops    浮点运算计数    pi    圆周率
i    复数单元    realmax    最大浮点数值
inf    无穷大    realmin    最小浮点数值
inputname    输入参数名    varargin    函数中输入的可选参数
j    复数单元    varargout    函数中输出的可选参数

附录4.3时间与日期
函数名    功能描述    函数名    功能描述
calender    日历    eomday    计算月末
clock    时钟    etime    所用时间函数
cputime    所用的CPU时间    now    当前日期与时间
date    日期    tic    启动秒表计时器
datenum    日期(数字串格式)    toc    读取秒表计时器
datestr    日期(字符串格式)    weekday    星期函数
datevoc    日期(年月日分立格式)

附录4.4矩阵处理
函数名    功能描述    函数名    功能描述
cat    向量连接    reshape    改变矩阵行列个数
diag    建立对角矩阵或获取对角向量    rot90    将矩阵旋转90度
fliplr    按左右方向翻转矩阵元素    tril    取矩阵的下三角部分
flipud    按上下方向翻转矩阵元素    triu    取矩阵的上三角部分
repmat    复制并排列矩阵函数

附录5 特殊矩阵
函数名    功能描述    函数名    功能描述
compan    生成伴随矩阵    invhilb    生成逆hilbert矩阵
gallery    生成一些小的测试矩阵    magic    生成magic矩阵
hadamard    生成hadamard矩阵    pascal    生成pascal矩阵
hankel    生成hankel矩阵    toeplitz    生成toeplitz矩阵
hilb    生成hilbert矩阵    wilkinson    生成wilkinson特征值测试矩阵

附录6 数学函数
附录6.1三角函数
函数名    功能描述    函数名    功能描述
sin/asin    正弦/反正弦函数    sec/asec    正割/反正割函数
sinh/asinh    双曲正弦/反双曲正弦函数    sech/asech    双曲正割/反双曲正割函数
cos/acos    余弦/反余弦函数    csc/acsc    余割/反余割函数
cosh/acosh    双曲余弦/反双曲余弦函数    csch/acsch    双曲余割/反双曲余割函数
tan/atan    正切/反正切函数    cot/acot    余切/反余切函数
tanh/atanh    双曲正切/反双曲正切函数    coth/acoth    双曲余切/反双曲余切函数
atan2    四个象限内反正切函数

附录6.2指数函数
函数名    功能描述    函数名    功能描述
exp    指数函数    log10    常用对数函数
log    自然对数函数    sqrt    平方根函数

附录6.3复数函数
函数名    功能描述    函数名    功能描述
abs    绝对值函数    imag    求虚部函数
angle    角相位函数    real    求实部函数
conj    共轭复数函数

附录6.4数值处理
函数名    功能描述    函数名    功能描述
fix    沿零方向取整    round    舍入取整
floor    沿-∞方向取整    rem    求除法的余数
ceil    沿+∞方向取整    sign    符号函数

附录6.5其他特殊数学函数
函数名    功能描述    函数名    功能描述
airy    airy函数    erfcx    比例互补误差函数
besselh    bessel函数(hankel函数)    erfinv    逆误差函数
bessili    改进的第一类bessel函数    expint    指数积分函数
besselk    改进的第二类bessel函数    gamma    gamma函数
besselj    第一类bessel函数    gammainc    非完全gamma函数
bessely    第二类bessel函数    gammaln    gamma对数函数
beta    beta函数    gcd    最大公约数
betainc    非完全的beta函数    lcm    最小公倍数
betaln    beta对数函数    log2    分割浮点数
elipj    Jacobi椭圆函数    legendre    legendre伴随函数
ellipke    完全椭圆积分    pow2    基2标量浮点数
erf    误差函数    rat    有理逼近
erfc    互补误差函数    rats    有理输出

================================================================
A a
abs 绝对值、模、字符的ASCII码值
acos 反余弦
acosh 反双曲余弦
acot 反余切
acoth 反双曲余切
acsc 反余割
acsch 反双曲余割
align 启动图形对象几何位置排列工具
all 所有元素非零为真
angle 相角
ans 表达式计算结果的缺省变量名
any 所有元素非全零为真
area 面域图
argnames 函数M文件宗量名
asec 反正割
asech 反双曲正割
asin 反正弦
asinh 反双曲正弦
assignin 向变量赋值
atan 反正切
atan2 四象限反正切
atanh 反双曲正切
autumn 红黄调秋色图阵
axes 创建轴对象的低层指令
axis 控制轴刻度和风格的高层指令

B b

bar 二维直方图
bar3 三维直方图
bar3h 三维水平直方图
barh 二维水平直方图
base2dec X进制转换为十进制
bin2dec 二进制转换为十进制
blanks 创建空格串
bone 蓝色调黑白色图阵
box 框状坐标轴
break while 或for 环中断指令
brighten 亮度控制

C c

capture (3版以前)捕获当前图形
cart2pol 直角坐标变为极或柱坐标
cart2sph 直角坐标变为球坐标
cat 串接成高维数组
caxis 色标尺刻度
cd 指定当前目录
cdedit 启动用户菜单、控件回调函数设计工具
cdf2rdf 复数特征值对角阵转为实数块对角阵
ceil 向正无穷取整
cell 创建元胞数组
cell2struct 元胞数组转换为构架数组
celldisp 显示元胞数组内容
cellplot 元胞数组内部结构图示
char 把数值、符号、内联类转换为字符对象
chi2cdf 分布累计概率函数
chi2inv 分布逆累计概率函数
chi2pdf 分布概率密度函数
chi2rnd 分布随机数发生器
chol Cholesky分解
clabel 等位线标识
cla 清除当前轴
class 获知对象类别或创建对象
clc 清除指令窗
clear 清除内存变量和函数
clf 清除图对象
clock 时钟
colorcube 三浓淡多彩交叉色图矩阵
colordef 设置色彩缺省值
colormap 色图
colspace 列空间的基
close 关闭指定窗口
colperm 列排序置换向量
comet 彗星状轨迹图
comet3 三维彗星轨迹图
compass 射线图
compose 求复合函数
cond (逆)条件数
condeig 计算特征值、特征向量同时给出条件数
condest 范 -1条件数估计
conj 复数共轭
contour 等位线
contourf 填色等位线
contour3 三维等位线
contourslice 四维切片等位线图
conv 多项式乘、卷积
cool 青紫调冷色图
copper 古铜调色图
cos 余弦
cosh 双曲余弦
cot 余切
coth 双曲余切
cplxpair 复数共轭成对排列
csc 余割
csch 双曲余割
cumsum 元素累计和
cumtrapz 累计梯形积分
cylinder 创建圆柱

D d

dblquad 二重数值积分
deal 分配宗量
deblank 删去串尾部的空格符
dec2base 十进制转换为X进制
dec2bin 十进制转换为二进制
dec2hex 十进制转换为十六进制
deconv 多项式除、解卷
delaunay Delaunay 三角剖分
del2 离散Laplacian差分
demo Matlab演示
det 行列式
diag 矩阵对角元素提取、创建对角阵
diary Matlab指令窗文本内容记录
diff 数值差分、符号微分
digits 符号计算中设置符号数值的精度
dir 目录列表
disp 显示数组
display 显示对象内容的重载函数
dlinmod 离散系统的线性化模型
dmperm 矩阵Dulmage-Mendelsohn 分解
dos 执行DOS 指令并返回结果
double 把其他类型对象转换为双精度数值
drawnow 更新事件队列强迫Matlab刷新屏幕
dsolve 符号计算解微分方程

E e

echo M文件被执行指令的显示
edit 启动M文件编辑器
eig 求特征值和特征向量
eigs 求指定的几个特征值
end 控制流FOR等结构体的结尾元素下标
eps 浮点相对精度
error 显示出错信息并中断执行
errortrap 错误发生后程序是否继续执行的控制
erf 误差函数
erfc 误差补函数
erfcx 刻度误差补函数
erfinv 逆误差函数
errorbar 带误差限的曲线图
etreeplot 画消去树
eval 串演算指令
evalin 跨空间串演算指令
exist 检查变量或函数是否已定义
exit 退出Matlab环境
exp 指数函数
expand 符号计算中的展开操作
expint 指数积分函数
expm 常用矩阵指数函数
expm1 Pade法求矩阵指数
expm2 Taylor法求矩阵指数
expm3 特征值分解法求矩阵指数
eye 单位阵
ezcontour 画等位线的简捷指令
ezcontourf 画填色等位线的简捷指令
ezgraph3 画表面图的通用简捷指令
ezmesh 画网线图的简捷指令
ezmeshc 画带等位线的网线图的简捷指令
ezplot 画二维曲线的简捷指令
ezplot3 画三维曲线的简捷指令
ezpolar 画极坐标图的简捷指令
ezsurf 画表面图的简捷指令
ezsurfc 画带等位线的表面图的简捷指令

F f

factor 符号计算的因式分解
feather 羽毛图
feedback 反馈连接
feval 执行由串指定的函数
fft 离散Fourier变换
fft2 二维离散Fourier变换
fftn 高维离散Fourier变换
fftshift 直流分量对中的谱
fieldnames 构架域名
figure 创建图形窗
fill3 三维多边形填色图
find 寻找非零元素下标
findobj 寻找具有指定属性的对象图柄
findstr 寻找短串的起始字符下标
findsym 机器确定内存中的符号变量
finverse 符号计算中求反函数
fix 向零取整
flag 红白蓝黑交错色图阵
fliplr 矩阵的左右翻转
flipud 矩阵的上下翻转
flipdim 矩阵沿指定维翻转
floor 向负无穷取整
flops 浮点运算次数
flow Matlab提供的演示数据
fmin 求单变量非线性函数极小值点(旧版)
fminbnd 求单变量非线性函数极小值点
fmins 单纯形法求多变量函数极小值点(旧版)
fminunc 拟牛顿法求多变量函数极小值点
fminsearch 单纯形法求多变量函数极小值点
fnder 对样条函数求导
fnint 利用样条函数求积分
fnval 计算样条函数区间内任意一点的值
fnplt 绘制样条函数图形
fopen 打开外部文件
for 构成for环用
format 设置输出格式
fourier Fourier 变换
fplot 返函绘图指令
fprintf 设置显示格式
fread 从文件读二进制数据
fsolve 求多元函数的零点
full 把稀疏矩阵转换为非稀疏阵
funm 计算一般矩阵函数
funtool 函数计算器图形用户界面
fzero 求单变量非线性函数的零点

G g

gamma 函数
gammainc 不完全 函数
gammaln 函数的对数
gca 获得当前轴句柄
gcbo 获得正执行”回调”的对象句柄
gcf 获得当前图对象句柄
gco 获得当前对象句柄
geomean 几何平均值
get 获知对象属性
getfield 获知构架数组的域
getframe 获取影片的帧画面
ginput 从图形窗获取数据
global 定义全局变量
gplot 依图论法则画图
gradient 近似梯度
gray 黑白灰度
grid 画分格线
griddata 规则化数据和曲面拟合
gtext 由鼠标放置注释文字
guide 启动图形用户界面交互设计工具

H h

harmmean 调和平均值
help 在线帮助
helpwin 交互式在线帮助
helpdesk 打开超文本形式用户指南
hex2dec 十六进制转换为十进制
hex2num 十六进制转换为浮点数
hidden 透视和消隐开关
hilb Hilbert矩阵
hist 频数计算或频数直方图
histc 端点定位频数直方图
histfit 带正态拟合的频数直方图
hold 当前图上重画的切换开关
horner 分解成嵌套形式
hot 黑红黄白色图
hsv 饱和色图

I i

if-else-elseif 条件分支结构
ifft 离散Fourier反变换
ifft2 二维离散Fourier反变换
ifftn 高维离散Fourier反变换
ifftshift 直流分量对中的谱的反操作
ifourier Fourier反变换
i, j 缺省的”虚单元”变量
ilaplace Laplace反变换
imag 复数虚部
image 显示图象
imagesc 显示亮度图象
imfinfo 获取图形文件信息
imread 从文件读取图象
imwrite 把
imwrite 把图象写成文件
ind2sub 单下标转变为多下标
inf 无穷大
info MathWorks公司网点地址
inline 构造内联函数对象
inmem 列出内存中的函数名
input 提示用户输入
inputname 输入宗量名
int 符号积分
int2str 把整数数组转换为串数组
interp1 一维插值
interp2 二维插值
interp3 三维插值
interpn N维插值
interpft 利用FFT插值
intro Matlab自带的入门引导
inv 求矩阵逆
invhilb Hilbert矩阵的准确逆
ipermute 广义反转置
isa 检测是否给定类的对象
ischar 若是字符串则为真
isequal 若两数组相同则为真
isempty 若是空阵则为真
isfinite 若全部元素都有限则为真
isfield 若是构架域则为真
isglobal 若是全局变量则为真
ishandle 若是图形句柄则为真
ishold 若当前图形处于保留状态则为真
isieee 若计算机执行IEEE规则则为真
isinf 若是无穷数据则为真
isletter 若是英文字母则为真
islogical 若是逻辑数组则为真
ismember 检查是否属于指定集
isnan 若是非数则为真
isnumeric 若是数值数组则为真
isobject 若是对象则为真
isprime 若是质数则为真
isreal 若是实数则为真
isspace 若是空格则为真
issparse 若是稀疏矩阵则为真
isstruct 若是构架则为真
isstudent 若是Matlab学生版则为真
iztrans 符号计算Z反变换

J j , K k

jacobian 符号计算中求Jacobian 矩阵
jet 蓝头红尾饱和色
jordan 符号计算中获得 Jordan标准型
keyboard 键盘获得控制权
kron Kronecker乘法规则产生的数组

L l

laplace Laplace变换
lasterr 显示最新出错信息
lastwarn 显示最新警告信息
leastsq 解非线性最小二乘问题(旧版)
legend 图形图例
lighting 照明模式
line 创建线对象
lines 采用plot 画线色
linmod 获连续系统的线性化模型
linmod2 获连续系统的线性化精良模型
linspace 线性等分向量
ln 矩阵自然对数
load 从MAT文件读取变量
log 自然对数
log10 常用对数
log2 底为2的对数
loglog 双对数刻度图形
logm 矩阵对数
logspace 对数分度向量
lookfor 按关键字搜索M文件
lower 转换为小写字母
lsqnonlin 解非线性最小二乘问题
lu LU分解

M m

mad 平均绝对值偏差
magic 魔方阵
maple &nb, sp; 运作 Maple格式指令
mat2str 把数值数组转换成输入形态串数组
material 材料反射模式
max 找向量中最大元素
mbuild 产生EXE文件编译环境的预设置指令
mcc 创建MEX或EXE文件的编译指令
mean 求向量元素的平均值
median 求中位数
menuedit 启动设计用户菜单的交互式编辑工具
mesh 网线图
meshz 垂帘网线图
meshgrid 产生”格点”矩阵
methods 获知对指定类定义的所有方法函数
mex 产生MEX文件编译环境的预设置指令
mfunlis 能被mfun计算的MAPLE经典函数列表
mhelp 引出 Maple的在线帮助
min 找向量中最小元素
mkdir 创建目录
mkpp 逐段多项式数据的明晰化
mod 模运算
more 指令窗中内容的分页显示
movie 放映影片动画
moviein 影片帧画面的内存预置
mtaylor 符号计算多变量Taylor级数展开

N n

ndims 求数组维数
NaN 非数(预定义)变量
nargchk 输入宗量数验证
nargin 函数输入宗量数
nargout 函数输出宗量数
ndgrid 产生高维格点矩阵
newplot 准备新的缺省图、轴
nextpow2 取最接近的较大2次幂
nnz 矩阵的非零元素总数
nonzeros 矩阵的非零元素
norm 矩阵或向量范数
normcdf 正态分布累计概率密度函数
normest 估计矩阵2范数
norminv 正态分布逆累计概率密度函数
normpdf 正态分布概率密度函数
normrnd 正态随机数发生器
notebook 启动Matlab和Word的集成环境
null 零空间
num2str 把非整数数组转换为串
numden 获取最小公分母和相应的分子表达式
nzmax 指定存放非零元素所需内存

O o

ode1 非Stiff 微分方程变步长解算器
ode15s Stiff 微分方程变步长解算器
ode23t 适度Stiff 微分方程解算器
ode23tb Stiff 微分方程解算器
ode45 非Stiff 微分方程变步长解算器
odefile ODE 文件模板
odeget 获知ODE 选项设置参数
odephas2 ODE 输出函数的二维相平面图
odephas3 ODE 输出函数的三维相空间图
odeplot ODE 输出函数的时间轨迹图
odeprint 在Matlab指令窗显示结果
odeset 创建或改写 ODE选项构架参数值
ones 全1数组
optimset 创建或改写优化泛函指令的选项参数值
orient 设定图形的排放方式
orth 值空间正交化

P p

pack 收集Matlab内存碎块扩大内存
pagedlg 调出图形排版对话框
patch 创建块对象
path 设置Matlab搜索路径的指令
pathtool 搜索路径管理器
pause 暂停
pcode 创建预解译P码文件
pcolor 伪彩图
peaks Matlab提供的典型三维曲面
permute 广义转置
pi (预定义变量)圆周率
pie 二维饼图
pie3 三维饼图
pink 粉红色图矩阵
pinv 伪逆
plot 平面线图
plot3 三维线图
plotmatrix 矩阵的散点图
plotyy 双纵坐标图
poissinv 泊松分布逆累计概率分布函数
poissrnd 泊松分布随机数发生器
pol2cart 极或柱坐标变为直角坐标
polar 极坐标图
poly 矩阵的特征多项式、根集对应的多项式
poly2str 以习惯方式显示多项式
poly2sym 双精度多项式系数转变为向量符号多项式
polyder 多项式导数
polyfit 数据的多项式拟合
polyval 计算多项式的值
polyvalm 计算矩阵多项式
pow2 2的幂
ppval 计算分段多项式
pretty 以习惯方式显示符号表达式
print 打印图形或SIMULINK模型
printsys 以习惯方式显示有理分式
prism 光谱色图矩阵
procread 向MAPLE输送计算程序
profile 函数文件性能评估器
propedit 图形对象属性编辑器
pwd 显示当前工作目录

Q q

quad 低阶法计算数值积分
quad8 高阶法计算数值积分(QUADL)
quit 推出Matlab 环境
quiver 二维方向箭头图
quiver3 三维方向箭头图

R r

rand 产生均匀分布随机数
randn 产生正态分布随机数
randperm 随机置换向量
range 样本极差
rank 矩阵的秩
rats 有理输出
rcond 矩阵倒条件数估计
real 复数的实部
reallog 在实数域内计算自然对数
realpow 在实数域内计算乘方
realsqrt 在实数域内计算平方根
realmax 最大正浮点数
realmin 最小正浮点数
rectangle 画”长方框”
rem 求余数
repmat 铺放模块数组
reshape 改变数组维数、大小
residue 部分分式展开
return 返回
ribbon 把二维曲线画成三维彩带图
rmfield 删去构架的域
roots 求多项式的根
rose 数扇形图
rot90 矩阵旋转90度
rotate 指定的原点和方向旋转
rotate3d 启动三维图形视角的交互设置功能
round 向最近整数圆整
rref 简化矩阵为梯形形式
rsf2csf 实数块对角阵转为复数特征值对角阵
rsums Riemann和

S s

save 把内存变量保存为文件
scatter 散点图
scatter3 三维散点图
sec 正割
sech 双曲正割
semilogx X轴对数刻度坐标图
semilogy Y轴对数刻度坐标图
series 串联连接
set 设置图形对象属性
setfield 设置构架数组的域
setstr 将ASCII码转换为字符的旧版指令
sign 根据符号取值函数
signum 符号计算中的符号取值函数
sim 运行SIMULINK模型
simget 获取SIMULINK模型设置的仿真参数
simple 寻找最短形式的符号解
simplify 符号计算中进行简化操作
simset 对SIMULINK模型的仿真参数进行设置
simulink 启动SIMULINK模块库浏览器
sin 正弦
sinh 双曲正弦
size 矩阵的大小
slice 立体切片图
solve 求代数方程的符号解
spalloc 为非零元素配置内存
sparse 创建稀疏矩阵
spconvert 把外部数据转换为稀疏矩阵
spdiags 稀疏对角阵
spfun 求非零元素的函数值
sph2cart 球坐标变为直角坐标
sphere 产生球面
spinmap 色图彩色的周期变化
spline 样条插值
spones 用1置换非零元素
sprandsym 稀疏随机对称阵
sprank 结构秩
spring 紫黄调春色图
sprintf 把格式数据写成串
spy 画稀疏结构图
sqrt 平方根
sqrtm 方根矩阵
squeeze 删去大小为1的”孤维”
sscanf 按指定格式读串
stairs 阶梯图
std 标准差
stem 二维杆图
step 阶跃响应指令
str2double 串转换为双精度值
str2mat 创建多行串数组
str2num 串转换为数
strcat 接成长串
strcmp 串比较
strjust 串对齐
strmatch 搜索指定串
strncmp 串中前若干字符比较
strrep 串替换
strtok 寻找第一间隔符前的内容
struct 创建构架数组
struct2cell 把构架转换为元胞数组
strvcat 创建多行串数组
sub2ind 多下标转换为单下标
subexpr 通过子表达式重写符号对象
subplot 创建子图
subs 符号计算中的符号变量置换
subspace 两子空间夹角
sum 元素和
summer 绿黄调夏色图
superiorto 设定优先级
surf 三维着色表面图
surface 创建面对象
surfc 带等位线的表面图
surfl 带光照的三维表面图
surfnorm 空间表面的法线
svd 奇异值分解
svds 求指定的若干奇异值
switch-case-otherwise 多分支结构
sym2poly 符号多项式转变为双精度多项式系数向量
symmmd 对称最小度排序
symrcm 反向Cuthill-McKee排序
syms 创建多个符号对象

T t

tan 正切
tanh 双曲正切
taylortool 进行Taylor逼近分析的交互界面
text 文字注释
tf 创建传递函数对象
tic 启动计时器
title 图名
toc 关闭计时器
trapz 梯形法数值积分
treelayout 展开树、林
treeplot 画树图
tril 下三角阵
trim 求系统平衡点
trimesh 不规则格点网线图
trisurf 不规则格点表面图 triu 上三角阵 try-catch 控制流中的Try-catch结构 type 显示M文件
U u
uicontextmenu 创建现场菜单
uicontrol 创建用户控件
uimenu 创建用户菜单
unmkpp 逐段多项式数据的反明晰化
unwrap 自然态相角
upper 转换为大写字母

V v

var 方差
varargin 变长度输入宗量
varargout 变长度输出宗量
vectorize 使串表达式或内联函数适于数组运算
ver 版本信息的获取
view 三维图形的视角控制
voronoi Voronoi多边形
vpa 任意精度(符号类)数值

W w

warning 显示警告信息
what 列出当前目录上的文件
whatsnew 显示Matlab中 Readme文件的内容
which 确定函数、文件的位置
while 控制流中的While环结构
white 全白色图矩阵
whitebg 指定轴的背景色
who 列出内存中的变量名
whos 列出内存中变量的详细信息
winter 蓝绿调冬色图
workspace 启动内存浏览器

X x , Y y , Z z

xlabel X轴名
xor 或非逻辑
yesinput 智能输入指令
ylabel Y轴名
zeros 全零数组
zlabel Z轴名
zoom 图形的变焦放大和缩小
ztrans 符号计算Z变换

MATLAB命令大全

管理命令和函数

help      在线帮助文件

doc      装入超文本说明

what      M、MAT、MEX文件的目录列表

type      列出M文件

lookfor      通过help条目搜索关键字

which      定位函数和文件

Demo      运行演示程序

Path      控制MATLAB的搜索路径

管理变量和工作空间

Who      列出当前变量

Whos      列出当前变量(长表)

Load      从磁盘文件中恢复变量

Save      保存工作空间变量

Clear      从内存中清除变量和函数

Pack      整理工作空间内存

Size      矩阵的尺寸

Length      向量的长度

disp      显示矩阵或

与文件和*作系统有关的命令

cd      改变当前工作目录

Dir      目录列表

Delete      删除文件

Getenv      获取环境变量值

!      执行DOS*作系统命令

Unix      执行UNIX*作系统命令并返回结果

Diary      保存MATLAB任务

控制命令窗口

Cedit      设置命令行编辑

Clc      清命令窗口

Home      光标置左上角

Format      设置输出格式

Echo      底稿文件内使用的回显命令

more      在命令窗口中控制分页输出

启动和退出MATLAB

Quit      退出MATLAB

Startup      引用MATLAB时所执行的M文件

Matlabrc      主启动M文件

一般信息

Info      MATLAB系统信息及Mathworks公司信息

Subscribe      成为MATLAB的订购用户

hostid      MATLAB主服务程序的识别代号

Whatsnew      在说明书中未包含的新信息

Ver      版本信息

*作符和特殊字符

+      加

—      减

*      矩阵乘法

.*      数组乘法

^      矩阵幂

.^      数组幂

\      左除或反斜杠

/      右除或斜杠

./      数组除

Kron      Kronecker张量积

:      冒号

( )      圆括号

[ ]      方括号

.      小数点

..      父目录

…      继续

,      逗号

;      分号

%      注释

!      感叹号

‘      转置或引用

=      赋值

= =      相等

< >      关系*作符

&      逻辑与

|      逻辑或

~      逻辑非

xor      逻辑异或

逻辑函数

Exist      检查变量或函数是否存在

Any      向量的任一元为真,则其值为真

All      向量的所有元为真,则其值为真

Find      找出非零元素的索引号

三角函数

Sin      正弦

Sinh      双曲正弦

Asin      反正弦

Asinh      反双曲正弦

Cos      余弦

Cosh      双曲余弦

Acos      反余弦

Acosh      反双曲余弦

Tan      正切

Tanh      双曲正切

Atan      反正切

Atan2      四象限反正切

Atanh      反双曲正切

Sec      正割

Sech      双曲正割

Asech      反双曲正割

Csc      余割

Csch      双曲余割

Acsc      反余割

Acsch      反双曲余割

Cot      余切

Coth      双曲余切

Acot      反余切

Acoth      反双曲余切

指数函数

Exp      指数

Log      自然对数

Log10      常用对数

Sqrt      平方根

复数函数

Abs      绝对值

Argle      相角

Conj      复共轭

Image      复数虚部

Real      复数实部

数值函数

Fix      朝零方向取整

Floor      朝负无穷大方向取整

Ceil      朝正无穷大方向取整

Round      朝最近的整数取整

Rem      除后取余

Sign      符号函数

基本矩阵

Zeros      零矩阵

Ones      全“1”矩阵

Eye      单位矩阵

Rand      均匀分布的随机数矩阵

Randn      正态分布的随机数矩阵

Logspace      对数间隔的向量

Meshgrid      三维图形的X和Y数组

:      规则间隔的向量

特殊变量和常数

Ans      当前的答案

Eps      相对浮点精度

Realmax      最大浮点数

Realmin      最小浮点数

Pi      圆周率

I,j      虚数单位

Inf      无穷大

Nan      非数值

Flops      浮点运算次数

Nargin      函数输入变量数

Nargout      函数输出变量数

Computer      计算机类型

Isieee      当计算机采用IEEE算术标准时,其值为真

Why      简明的答案

Version      MATLAB版本号

时间和日期

Clock      挂钟

Date      日历

Etime      计时函数

Tic      秒表开始计时

Toc      计时函数

Cputime      CPU时间(以秒为单位)

矩阵*作

Diag      建立和提取对角阵

Fliplr      矩阵作左右翻转

Flipud      矩阵作上下翻转

Reshape      改变矩阵大小

Rot90      矩阵旋转90度

Tril      提取矩阵的下三角部分

Triu      提取矩阵的上三角部分

:      矩阵的索引号,重新排列矩阵

Compan      友矩阵

Hadamard      Hadamard矩阵

Hankel      Hankel矩阵

Hilb      Hilbert矩阵

Invhilb      逆Hilbert矩阵

Kron      Kronecker张量积

Magic      魔方矩阵

Toeplitz      Toeplitz矩阵

Vander      Vandermonde矩阵

矩阵分析

Cond      计算矩阵条件数

Norm      计算矩阵或向量范数

Rcond Linpack      逆条件值估计

Rank      计算矩阵秩

Det      计算矩阵行列式值

Trace      计算矩阵的迹

Null      零矩阵

Orth      正交化

线性方程

\和/      线性方程求解

Chol      Cholesky分解

Lu      高斯消元法求系数阵

Inv      矩阵求逆

Qr      正交三角矩阵分解(QR分解)

Pinv      矩阵伪逆

特征值和奇异值

Eig      求特征值和特征向量

Poly      求特征多项式

Hess      Hessberg形式

Qz      广义特征值

Cdf2rdf      变复对角矩阵为实分块对角形式

Schur      Schur分解

Balance      矩阵均衡处理以提高特征值精度

Svde      奇异值分解

矩阵函数

Expm      矩阵指数

Expm1      实现expm的M文件

Expm2      通过泰勒级数求矩阵指数

Expm3      通过特征值和特征向量求矩阵指数

Logm      矩阵对数

Sqrtm      矩阵开平方根

Funm      一般矩阵的计算

泛函——非线性数值方法

Ode23      低阶法求解常微分方程

Ode23p      低阶法求解常微分方程并绘出结果图形

Ode45      高阶法求解常微分方程

Quad      低阶法计算数值积分

Quad8      高阶法计算数值积分

Fmin      单变量函数的极小变化

Fmins      多变量函数的极小化

Fzero      找出单变量函数的零点

Fplot      函数绘图

多项式函数

Roots      求多项式根

Poly      构造具有指定根的多项式

Polyvalm      带矩阵变量的多项式计算

Residue      部分分式展开(留数计算)

Polyfit      数据的多项式拟合

Polyder      微分多项式

Conv      多项式乘法

Deconv      多项式除法

建立和控制图形窗口

Figure      建立图形

Gcf      获取当前图形的句柄

Clf      清除当前图形

Close      关闭图形

建立和控制坐标系

Subplot      在标定位置上建立坐标系

Axes      在任意位置上建立坐标系

Gca      获取当前坐标系的句柄

Cla      清除当前坐标系

Axis      控制坐标系的刻度和形式

Caxis      控制伪彩色坐标刻度

Hold      保持当前图形

句柄图形对象

Figure      建立图形窗口

Axes      建立坐标系

Line      建立曲线

Text      建立文本串

Patch      建立图形填充块

Surface      建立曲面

Image      建立图像

Uicontrol      建立用户界面控制

Uimen      建立用户界面菜单

句柄图形*作

Set      设置对象

Get      获取对象特征

Reset      重置对象特征

Delete      删除对象

Newplot      预测nextplot性质的M文件

Gco      获取当前对象的句柄

Drawnow      填充未完成绘图事件

Findobj      寻找指定特征值的对象

打印和存储

Print      打印图形或保存图形

Printopt      配置本地打印机缺省值

Orient      设置纸张取向

Capture      屏幕抓取当前图形

基本X—Y图形

Plot      线性图形

Loglog      对数坐标图形

Semilogx      半对数坐标图形(X轴为对数坐标)

Semilogy      半对数坐标图形(Y轴为对数坐标)

Fill      绘制二维多边形填充图

特殊X—Y图形

Polar      极坐标图

Bar      条形图

Stem      离散序列图或杆图

Stairs      阶梯图

Errorbar      误差条图

Hist      直方图

Rose      角度直方图

Compass      区域图

Feather      箭头图

Fplot      绘图函数

Comet      星点图

图形注释

Title      图形标题

Xlabel      X轴标记

Ylabel      Y轴标记

Text      文本注释

Gtext      用鼠标放置文本

Grid      网格线

MATLAB编程语言

Function      增加新的函数

Eval      执行由MATLAB表达式构成的字串

Feval      执行由字串指定的函数

Global      定义全局变量

程序控制流

If      条件执行语句

Else      与if命令配合使用

Elseif      与if命令配合使用

End      For,while和if语句的结束

For      重复执行指定次数(循环)

While      重复执行不定次数(循环)

Break      终止循环的执行

Return      返回引用的函数

Error      显示信息并终止函数的执行

交互输入

Input      提示用户输入

Keyboard      像底稿文件一样使用键盘输入

Menu      产生由用户输入选择的菜单

Pause      等待用户响应

Uimenu      建立用户界面菜单

Uicontrol      建立用户界面控制

一般字符串函数

Strings      MATLAB中有关字符串函数的说明

Abs      变字符串为数值

Setstr      变数值为字符串

Isstr      当变量为字符串时其值为真

Blanks      空串

Deblank      删除尾部的空串

Str2mat      从各个字符串中形成文本矩阵

Eval      执行由MATLAB表达式组成的串

字符串比较

Strcmp      比较字符串

Findstr      在一字符串中查找另一个子串

Upper      变字符串为大写

Lower      变字符串为小写

Isletter      当变量为字母时,其值为真

Isspace      当变量为空白字符时,其值为真

字符串与数值之间变换

Num2str      变数值为字符串

Int2str      变整数为字符串

Str2num      变字符串为数值

Sprintf      变数值为格式控制下的字符串

Sscanf      变字符串为格式控制下的数值

十进制与十六进制数之间变换

Hex2num      变十六进制为IEEE标准下的浮点数

Hex2dec      变十六制数为十进制数

Dec2hex      变十进制数为十六进制数

建模

Append      追加系统动态特性

Augstate      变量状态作为输出

Blkbuild      从方框图中构造状态空间系统

Cloop      系统的闭环

Connect      方框图建模

Conv      两个多项式的卷积

Destim      从增益矩阵中形成离散状态估计器

Dreg      从增益矩阵中形成离散控制器和估计器

Drmodel      产生随机离散模型

Estim      从增益矩阵中形成连续状态估计器

Feedback      反馈系统连接

Ord2      产生二阶系统的A、B、C、D

Pade      时延的Pade近似

Parallel      并行系统连接

Reg      从增益矩阵中形成连续控制器和估计器

Rmodel      产生随机连续模型

Series      串行系统连接

Ssdelete      从模型中删除输入、输出或状态

ssselect      从大系统中选择子系统

模型变换

C2d      变连续系统为离散系统

C2dm      利用指定方法变连续为离散系统

C2dt      带一延时变连续为离散系统

D2c      变离散为连续系统

D2cm      利用指定方法变离散为连续系统

Poly      变根值表示为多项式表示

Residue      部分分式展开

Ss2tf      变状态空间表示为传递函数表示

Ss2zp      变状态空间表示为零极点表示

Tf2ss      变传递函数表示为状态空间表示

Tf2zp      变传递函数表示为零极点表示

Zp2tf      变零极点表示为传递函数表示

Zp2ss      变零极点表示为状态空间表示

模型简化

Balreal      平衡实现

Dbalreal      离散平衡实现

Dmodred      离散模型降阶

Minreal      最小实现和零极点对消

Modred      模型降阶

模型实现

Canon      正则形式

Ctrbf      可控阶梯形

Obsvf      可观阶梯形

Ss2ss      采用相似变换

模型特性

Covar      相对于白噪声的连续协方差响应

Ctrb      可控性矩阵

Damp      阻尼系数和固有频率

Dcgain      连续稳态(直流)增益

Dcovar      相对于白噪声的离散协方差响应

Ddamp      离散阻尼系数和固有频率

Ddcgain      离散系统增益

Dgram      离散可控性和可观性

Dsort      按幅值排序离散特征值

Eig      特征值和特征向量

Esort      按实部排列连续特征值

Gram      可控性和可观性

Obsv      可观性矩阵

Printsys      按格式显示系统

Roots      多项式之根

Tzero      传递零点

Tzero2      利用随机扰动法传递零点

时域响应

Dimpulse      离散时间单位冲激响应

Dinitial      离散时间零输入响应

Dlsim      任意输入下的离散时间仿真

Dstep      离散时间阶跃响应

Filter      单输入单输出Z变换仿真

Impulse      冲激响应

Initial      连续时间零输入响应

Lsim      任意输入下的连续时间仿真

Ltitr      低级时间响应函数

Step      阶跃响应

Stepfun      阶跃函数

频域响应

Bode      Bode图(频域响应)

Dbode      离散Bode图

Dnichols      离散Nichols图

Dnyquist      离散Nyquist图

Dsigma      离散奇异值频域图

Fbode      连续系统的快速Bode图

Freqs      拉普拉斯变换频率响应

Freqz      Z变换频率响应

Ltifr      低级频率响应函数

Margin      增益和相位裕度

Nichols      Nichols图

Ngrid      画Nichols图的栅格线

Nyquist      Nyquist图

Sigma      奇异值频域图

根轨迹

Pzmap      零极点图

Rlocfind      交互式地确定根轨迹增益

Rlocus      画根轨迹

Sgrid      在网格上画连续根轨迹

Zgrid      在网格上画离散根轨迹

增益选择

Acker      单输入单输出极点配置

Dlqe      离散线性二次估计器设计

Dlqew      离散线性二次估计器设计

Dlqr      离散线性二次调节器设计

Dlqry      输出加权的离散调节器设计

Lqe      线性二次估计器设计

Lqed      基于连续代价函数的离散估计器设计

Lqe2      利用Schur法设计线性二次估计器

Lqew      一般线性二次估计器设计

Lqr      线性二次调节器设计

Lqrd      基于连续代价函数的离散调节器设计

Lqry      输出加权的调节器设计

Lqr2      利用Schur法设计线性二次调节器

Place      极点配置

方程求解

Are      代数Riccati方程求解

Dlyap      离散Lyapunov方程求解

Lyap      连续Lyapunov方程求解

Lyap2      利用对角化求解Lyapunov方程

演示示例

Ctrldemo      控制工具箱介绍

Boildemo      锅炉系统的LQG设计

Jetdemo      喷气式飞机偏航阻尼的典型设计

Diskdemo      硬盘控制器的数字控制

Kalmdemo      Kalman滤波器设计和仿真

实用工具

Abcdchk       检测(A、B、C、D)组的一致性

Chop      取n个重要的位置

Dexresp      离散取样响应函数

Dfrqint      离散Bode图的自动定范围的算法

Dfrqint2      离散Nyquist图的自动定范围的算法

Dmulresp      离散多变量响应函数

Distsl      到直线间的距离

Dric      离散Riccati方程留数计算

Dsigma2      DSIGMA实用工具函数

Dtimvec      离散时间响应的自动定范围算法

Exresp      取样响应函数

Freqint      Bode图的自动定范围算法

Freqint2      Nyquist图的自动定范围算法

Freqresp      低级频率响应函数

Givens      旋转

Housh      构造Householder变换

Imargin      利用内插技术求增益和相位裕度

Lab2ser      变标号为字符串

Mulresp      多变量响应函数

Nargchk      检测M文件的变量数

Perpxy      寻找最近的正交点

Poly2str      变多项式为字符串

Printmat      带行列号打印矩阵

Ric      Riccati方程留数计算

Schord      有序Schwr分解

Sigma2      SIGMA使用函数

Tfchk      检测传递函数的一致性

Timvec      连续时间响应的自动定范围算法

Tzreduce      在计算过零点时简化系统

Vsort      匹配两根轨迹的向量

启发式算法简谈(一)

引言:
解决实际的问题,要建模型,在求解。求解要选择算法,只有我们对各种算法的优缺点都很熟悉后才能根据实际问题选出有效的算法。但是对各种算法都了如指掌是不现实的,但多知道一些,会使你的选择集更大,找出最好算法的概率越大。现在研一,要开题了些点文献综述,愿与大家分享。

大自然是神奇的,它造就了很多巧妙的手段和运行机制。受大自然的启发,人们从大自然的运行规律中找到了许多解决实际问题的方法。对于那些受大自然的运行规律或者面向具体问题的经验、规则启发出来的方法,人们常常称之为启发式算法(Heuristic Algorithm)。现在的启发式算法也不是全部来自然的规律,也有来自人类积累的工作经验。

启发式算法的发展:
启发式算法的计算量都比较大,所以启发式算法伴随着计算机技术的发展,取得了巨大的成就。
40年代:由于实际需要,提出了启发式算法(快速有效)。
50年代:逐步繁荣,其中 贪婪算法和局部搜索 等到人们的关注。
60年代: 反思,发现以前提出的启发式算法速度很快,但是解得质量不能保证,而且对大规
模的问题仍然无能为力(收敛速度慢)。
70年代:计算复杂性理论的提出,NP问题。许多实际问题不可能在合理的时间范围内找到全局最优解。发现贪婪算法和局部搜索算法速度快,但解不好的原因主要是他们只是在局部的区域内找解,等到的解没有全局最优性。
由此必须引入新的搜索机制和策略………..
Holland的遗传算法出现了(Genetic Algorithm)再次引发了人们研究启发式算法的
兴趣。
80年代以后:
模拟退火算法(Simulated Annealing Algorithm),人工神经网络(Artificial Neural Network),禁忌搜索(Tabu Search)相继出现。
最近比较热或刚热过去的:
演化算法(Evolutionary Algorithm), 蚁群算法(Ant Algorithms), 拟人拟物算法,量子算法等。
各个算法的思想这就不再详细给出(以后会给出一些,关注我的blog) ,为什么要引出启发式算法,因为NP问题,一般的经典算法是无法求解,或求解时间过长,我们无法接受。这里要说明的是:启发式算法得到的解只是近似最优解(近似到什么程度,只有根据具体问题才能给出). 二十一世纪的最大的数学难题NP?=P,如果NP=P启发式算法就不在有存在的意义。

启发式算法的不足和如何解决方法:
(水平有限 仅仅提出6点)
启发式算法目前缺乏统一、完整的理论体系。
很难解决! 启发式算法的提出就是根据经验提出,没有什么坚实的理论基础。
由于NP理论,启发式算法就解得全局最优性无法保证。
等NP?=P有结果了再说吧,不知道这个世纪能不能行。
各种启发式算法都有个自优点如何,完美结合。
如果你没有实际经验,你就别去干这个,相结合就要做大量尝试,或许会有意外的收获。
启发式算法中的参数对算法的效果起着至关重要的作用,如何有效设置参数。
还是那句话,这是经验活但还要悟性,只有try again………..
启发算法缺乏有效的迭代停止条件。
还是经验,迭代次数100不行,就200,还不行就1000…………
还不行估计就是算法有问题,或者你把它用错地方了………..
启发式算法收敛速度的研究等。
你会发现,没有完美的东西,要快你就要付出代价,就是越快你得到的解也就远差。      (待续)