MatLab中M文件
MatLab 中 M 文件有函数和脚本两种不同类型,是可以被 MatLab 直接执行的源代码文件。
创建/编辑 M 文件:在命令行窗口运行 edit [filename1 [filename2 ...]] 命令。文件存在则编辑文件,文件不存在则先创建文件。若未指定 filename 参数,则默认创建无名的 M 文件。
运行 M 文件:在命令行窗口下运行 run filename 命令。
MatLab 普通函数是指使用以下基本格式定义的函数(具体请参见 MatLab 函数):
123function [y1,...,yn] = funcname(x1,...,xn) ...end
MatLab 普通函数可以在 M 函数文件和 M 脚本文件中定义(在 M 脚本中必须在所有脚本代码结束之后定义)。MatLab 普通函数具有临时独立的函数工作区,当函数运行结束时会自动清除对应的函数工作区。MatLab 普通函数的运算流程是不可见,只能看到输入参数和输出结果。
1. M 脚本文件
M 脚本中程序代码本质上是在命令行输入的一条一条命令的集合(MatLab 语言本质上可以看作是一 ...
MatLab函数
1. 普通函数
MatLab 中的普通函数是可以传递输入参数和输出参数的函数,其基本定义格式为:
123function [y1,...,yn] = funcname(x1,...,xn) ...end
其中,x1,…,xn 为输入参数变量,y1,…,yn 为输出参数变量,funcname 为函数名称。MatLab 在实现对普通函数调用时,允许使用比声明变量数目少的输入输出变量,调用传递的输入输出参数均为值传递(即拷贝原变量的值)。MatLab 普通函数体内预定义了一些参数控制命令:
控制命令
说明
nargin
当前函数调用实际输入参数个数
nargout
当前函数调用实际输出参数个数
varargin
当前函数调用可变长度输入参数列表(1×N1 \times N1×N 元胞数组)
varargout
当前函数调用可变长度输出参数列表(1×N1 \times N1×N 元胞数组)
narginchk(minArgs,maxArgs)
验证当前函数调用输入参数数目(不在区间 [minArgs,maxArgs] 将会触发报错)
nargoutchk ...
MatLab函数datetime、datenum、datevec、datestr
【注】详情请参阅 MatLab help 文档。
1. datetime 函数
1.1 作用
datetime 用来创建表示时间点的数组(数组元素类型为 datetime)。
1.2 语法
12345678910t = datetimet = datetime(relativeDay)t = datetime(DateString)t = datetime(DateStrings,'InputFormat',infmt)t = datetime(DateVectors)t = datetime(Y,M,D)t = datetime(Y,M,D,H,MI,S)t = datetime(Y,M,D,H,MI,S,MS)t = datetime(X,'ConvertFrom',dateType)t = datetime(___,Name,Value)
t = datetime
获取当前日期和时间的标量 datetime 数组。
t = datetime(relativeDay)
获取 relativeDay 指定日期的 datetime 数组。 ...
MatLab函数interp1、interp2、interp3、interpn
【注】详情请参阅 MatLab help 文档。
1. interp1
1.1 作用
对一元函数数据进行插值,得到指定自变量值对应插值函数值。
1.2 语法
1234567vq = interp1(x,v,xq)vq = interp1(x,v,xq,method)vq = interp1(x,v,xq,method,extrapolation)vq = interp1(v,xq)vq = interp1(v,xq,method)vq = interp1(v,xq,method,extrapolation)pp = interp1(x,v,method,'pp')
vq = interp1(x,v,xq)
向量 x、v 分别对应样本点的自变量值、因变量值;向量 xq 为查询点的自变量值。采用线型插值计算 xq 对应的因变量值返回到向量 vq 中。
vq = interp1(x,v,xq,method)
在上述语法基础上指定一元函数插值方法,其中 method 可取值有:
method 取值
说明
连续性
注意
‘linear’
线型插值(默 ...
MatLab函数legend
【注】详情请参阅 MatLab help 文档。
1. 简介
legend 函数可以在 MatLab 的坐标区按曲线的绘制顺序添加对应曲线的图例。
2. 格式
1234567891011legendlegend(label1,···,labelN)legend(labels)legend(subset,___)legend(target,___)legend(___,Name,Value)legend(bkgd)lgd = legend(___)[lgd,icons,plots,text] = legend(___)legend(vsbl)legend('off')
legend
legend 为每个绘制的数据序列创建一个带有描述性标签的图例。对于标签,图例使用数据序列的 DisplayName 属性中的文本(在绘图函数中指定的 DisplayName 的属性值)。如果 DisplayName 属性为空,则图例使用 ‘dataN’ 形式的标签。当在坐标区上添加或删除数据序列时,图里会自动更新(若不希望自动更新可将图例的 AutoUpdate 属性设置为 ‘off ...
MatLab函数meshgrid、ndgrid
【注】详情请参阅 MatLab help 文档。
1. meshgrid
1.1 作用
meshgrid 函数用于生成二维或三维网络坐标。
1.2 语法
1234[X,Y] = meshgrid(x,y)[X,Y] = meshgrid(x)[X,Y,Z] = meshgrid(x,y,z)[X,Y,Z] = meshgrid(x)
[X,Y] = meshgrid(x,y)
基于 x、y 坐标向量返回二维网络点对应的坐标矩阵。X、Y 为网络点对应维度的坐标矩阵,其中 X 每一行为 x 的一个副本,Y 每一列为 y 的一个副本。且 size(X) = size(Y) = [length(y),length(x)] 。
[X,Y] = meshgrid(x)
该语法等价于 [X,Y] = meshgrid(x,x),由上述语法可知,该语法返回网格大小为 length(x)×\times×length(x) 的方形网格坐标。
[X,Y,Z] = meshgrid(x,y,z)
基于 x、y、z 坐标向量返回三维网络点对应的坐标矩阵。X、Y、Z 为网络点对应维度的坐标矩阵,其中 ...
MatLab函数rand、randi、randn、rng
【注】详情请参阅 MatLab help 文档。
1. rand 函数
1.1 作用
rand 函数用于生成在区间 (0,1) 均匀分布的随机数。
1.2 语法
123456X = rand % 返回一个均匀分布的随机数X = rand(n) % 返回一个均匀分布的随机数矩阵(n x n)X = rand(sz1,...,szN) % 返回由均匀分布的随机数组成的 sz1 x ... x szN 矩阵,其中 sz1,...,szN 依次为各维度大小X = rand(sz) % 返回由均匀分布随机数组成大小由向量 sz 指定的随机数矩阵(矩阵大小 size(X) = sz)X = rand(___,typename) % 在以上语法基础上,指定数据类型 typename(取值为 'single'|'double') 的均匀分布随机数X = rand(___,'like',p) % 在以上语法基础上,指定随机数数据类型同数值数组 p 的数据类型(不能与 typename 同时使用)
2. randi 函数
2. ...
MatLab函数repmat
【注】详情请参阅 MatLab help 文档。
1. 简介
repmat函数可以用来创建重复元素的矩阵,元素可以是MatLab的任何单个数据类型(double、char、cell、struct 等)值,也可以是矩阵。
2. 格式
123B = repmat(A,n)B = repmat(A,r1,...,rN)B = repmat(A,r)
第一种格式
B为行、列维度均包含n个A的副本的矩阵。
第二种格式
B为第一维度包含r1个A副本、第二维度包含r2个A副本、···、第N维度包含rN个A副本的r1*r2*···*rN维的矩阵。
第三种格式
r为一个行向量,通过r来指定重复规则。假设r的维度为n x 1,则此时repmat(A,r)=repmat(A,r(1),r(2),···,r(n))。
3. 举例
repmat 语法
等效替代语法
repmat(NaN,m,n)
NaN(m,n)
repmat(single(inf),m,n)
inf(m,n,‘single’)
repmat(int8(0),m,n)
zeros(m,n,‘int8’)
...
MatLab函数sort、issorted、sortrows、issortedrows
【注】详情请参阅 MatLab help 文档。
1. sort 函数
1.1 作用
sort 函数对数组元素进行排序。
1.2 语法
12345B = sort(A)B = sort(A,dim)B = sort(___,direction)B = sort(___,Name,Value)[B,I] = sort(___)
B = sort(A)
按升序对 A 的元素进行排序。
如果 A 是向量,则 sort(A) 对向量元素进行排序。
如果 A 是矩阵,则 sort(A) 会将 A 的列视为向量并对每列进行排序。
如果 A 是多维数组,则 sort(A) 会沿大小不等于 1 的第一个数组维度计算,并将这些元素视为向量。
B = sort(A,dim)
返回 A 沿维度 dim(正整数标量)的排序结果到变量 B 中。
B = sort(___,direction)
使用上述任何语法返回按 direction 指定的顺序排序结果到变量 B 中。direction 的可选值为 'ascend' 或 'descend',分别表示升序(默认)、降序。
B = sort ...
MatLab函数xlsread、xlswrite、xlsfinfo
【注】详情请参阅 MatLab help 文档。
1. xlsread 函数
1.1 作用
读取 XLS、XLSX、XLSM、XLTX 和 XLTM 电子表格文件。
【注】xlsread 仅读取 7 位 ASCII 字符,不支持非相邻范围。
1.2 语法
12345678data = xlsread(filename)data = xlsread(filename,sheet)data = xlsread(filename,xlRange)data = xlsread(filename,sheet,xlRange)data = xlsread(filename,sheet,xlRange,'basic')[data,text,raw] = xlsread(___)___ = xlsread(filename,-1)[data,text,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)
data = xlsread(filename)
读取电子表格文件的第一张工作表,并在矩阵 ...
MatLab取整函数
MatLab默认的数值类型为双精度 double 型,而 double / single 类型数据在转为整型时常常需要取整,MatLab提供了以下四种取整函数。
函数
说明
举例
floor
向下取整
floor(1.5)=1floor(-1.5)=-2
ceil
向上取整
ceil(1.5)=2ceil(-1.5)=-1
round
取整到最近的整数(若小数部分为0.5,则向绝对值大的方向取整)
round(1.5)=2round(-1.5)=-2
fix
向 0 取整
round(1.5)=1round(-1.5)=-1
MatLab变量
1. 变量命名
在 MatLab 中,变量不需预先声明就可直接进行赋值操作。变量命名遵循以下规则:
变量名和函数名对字母大小写敏感
变量名和函数名必须以字母为开端,其后可以是字母、数字和下划线
不能使用 MatLab 关键字作为变量名和函数名(可使用 iskeywords 函数查看 MatLab 中所有的关键字)
变量名和函数名最多可包含 63 个字符,超过部分被截断忽略
避免使用函数名作为变量名,如果变量采用函数名,则该函数失效
【注】在 MatLab 中可使用 isvarname 函数验证变量命名是否符合规范。
2. 变量类型
【注】MatLab 工作区详情请参见。
局部变量
MatLab 中直接赋值使用的变量都是局部变量,每个局部变量都存储在对应的工作区内,作用域仅限于该工作区。
全局变量
MatLab 全局变量存储在自己的工作区内,在 MatLab 的全部工作区内都可以访问,访问前需要使用关键字 global 进行声明:
1global var
永久变量
MatLab 永久变量类似于其他编程语言(比如 C 语言)中的静态变量,只能在 MatLab 普通函数中定 ...