MATLAB学习三

匿名函数

匿名函数是存储在程序文件中、但与数据类型是 function_handle 的变量相关的函数。匿名函数可以接受输入并返回输出,就像标准函数一样。但是,它们可能只包含一个可执行语句。

>> sqr = @(x) x.^2;
>> a = sqr(5)

a =

    25

许多 MATLAB®函数接受将函数句柄用作输入,这样您可以在特定值范围内计算函数。您可以为匿名函数或程序文件中的函数创建句柄。使用匿名函数的好处是不必为仅需要简短定义的函数编辑和维护文件。

>> q = integral(sqr,0,1)

q =

    0.3333

您无需在工作区中创建变量以存储匿名函数。可以在表达式内创建临时函数句柄。

>> q = integral(@(x) x.^2,0,1)

q =

    0.3333

嵌套函数

嵌套函数是完全包含在父函数内的函数。程序文件中的任何函数都可以包含嵌套函数。

function parent
disp('This is the parent function')
nestedfx

   function nestedfx
      disp('This is the nested function')
   end

end

嵌套函数与其他类型的函数的主要区别是,嵌套函数可以访问和修改在其父函数中定义的变量。因此:

  • 嵌套函数可以使用不是以输入参数形式显式传递的变量。

  • 在父函数中,您可以为嵌套函数创建包含运行嵌套函数所必需的数据的句柄。

嵌套函数的要求

  • 嵌套函数通常不需要 end 语句。但是,要在程序文件中嵌套任何函数,该文件中的所有函数都必须使用 end 语句。

  • 不能在任何 MATLAB 程序控制语句内定义嵌套函数,例如 if/elseif/elseswitch/caseforwhile 或 try/catch

  • 必须按名称直接调用嵌套函数,而不使用 feval 或使用您使用 @ 运算符创建的函数句柄(并不是 str2func)。

  • 嵌套函数或包含嵌套函数的函数中的所有变量都必须显式定义。即,除非变量已存在于函数工作区中,否则无法调用函数或脚本向那些变量赋值。

脚本文件

edit编辑或创建文件
input请求用户输入
publish以指定格式生成 MATLAB 文件的视图
grabcode从发布到 HTML 的文件中提取 MATLAB 代码
snapnow拍摄图像快照以包括在发布文档中

代码节 

函数

创建函数

输入和输出参数

nargin函数输入参数数目
nargout函数输出参数数目
varargin可变长度输入参数列表
varargout可变长度的输出参数列表
narginchk验证输入参数数目
nargoutchk验证输出参数数目
validateattributes检查数组的有效性
validatestring检查文本的有效性
inputParser函数的输入解析器
inputname函数输入的变量名称
mfilename当前正在运行的代码的文件名

错误处理

error引发错误并显示消息
warning显示警告消息
lastwarn最后一条警告消息
assert条件为 false 时引发错误
onCleanup函数完成后的清理任务

线性代数

线性方程、特征值、奇异值、分解、矩阵运算、矩阵结构

线性方程

mldivide对线性方程组 Ax = B 求解 x
mrdivide对线性方程组 xA = B 求解 x
decomposition求解线性方程组的矩阵分解
lsqminnorm线性方程的最小范数最小二乘解
linsolve对线性方程组求解
inv矩阵求逆
pinvMoore-Penrose 伪逆
lscov存在已知协方差情况下的最小二乘解
lsqnonneg解算非负线性最小二乘问题
sylvester求 Sylvester 方程 AX + XB = C 的 X 解

特征值和奇异值

eig特征值和特征向量
eigs特征值和特征向量的子集
balance对角线缩放以提高特征值准确性
svd奇异值分解
svds奇异值和向量的子集
gsvd广义奇异值分解
ordeig拟三角矩阵的特征值
ordqz在 QZ 分解中将特征值重新排序
ordschur在 Schur 分解中将特征值重新排序
polyeig多项式特征值问题
qz广义特征值的 QZ 分解
hess矩阵的 Hessenberg 形式
schurSchur 分解
rsf2csf将实数 Schur 形式转换为复数 Schur 形式
cdf2rdf将复数对角形转换为实数分块对角形

矩阵分解

luLU 矩阵分解
ldlHermitian 不定矩阵的分块 LDL 分解
cholCholesky 分解
cholupdateCholesky 分解的秩 1 更新
qr正交三角分解
qrdelete从 QR 分解中删除列或行
qrinsert将列或行插入 QR 分解
qrupdateQR 分解的秩 1 更新
planerotGivens 平面旋转

矩阵运算

transpose转置向量或矩阵
ctranspose复共轭转置
mtimes矩阵乘法
mpower矩阵幂
sqrtm矩阵平方根
expm矩阵指数
logm矩阵对数
funm计算常规矩阵函数
kronKronecker 张量积
cross叉积
dot点积

矩阵结构

bandwidth矩阵的上下带宽
tril矩阵的下三角形部分
triu矩阵的上三角形部分
isbanded确定矩阵是否在特定带宽范围内
isdiag确定矩阵是否为对角矩阵
ishermitian确定矩阵是 Hermitian 矩阵还是斜 Hermitian 矩阵
issymmetric确定矩阵是对称矩阵还是斜对称矩阵
istril确定矩阵是否为下三角矩阵
istriu确定矩阵是否为上三角矩阵

矩阵属性

norm向量范数和矩阵范数
normest2-范数估值
vecnorm向量范数
cond逆运算的条件数
condest1-范数条件数估计
rcond条件数倒数
condeig与特征值有关的条件数
det矩阵行列式
null矩阵的零空间
orth适用于矩阵范围的标准正交基
rank矩阵的秩
rref简化的行阶梯形矩阵(Gauss-Jordan 消元法)
trace对角线元素之和
subspace两个子空间之间的角度

稀疏矩阵

MATLAB从不会自动创建稀疏矩阵。相反,还必须确定矩阵中是否包含足够高百分比的零元素,以便利用稀疏方法。

矩阵的密度是指非零元素数目除以矩阵元素总数。对于矩阵 M,这将为

nnz(M) / prod(size(M));

nnz(M) / numel(M);

密度非常低的矩阵通常很适合使用稀疏格式。 

创建

spalloc为稀疏矩阵分配空间
spdiags提取并创建稀疏带状和对角矩阵
speye稀疏单位矩阵
sprand稀疏均匀分布随机矩阵
sprandn稀疏正态分布随机矩阵
sprandsym稀疏对称随机矩阵
sparse创建稀疏矩阵
spconvert从稀疏矩阵外部格式导入

操作

issparse确定输入是否为稀疏矩阵
nnz非零矩阵元素的数目
nonzeros非零矩阵元素
nzmax为非零矩阵元素分配的存储量
spfun将函数应用于非零稀疏矩阵元素
spones将非零稀疏矩阵元素替换为一
spparms为稀疏矩阵例程设置参数
spy可视化稀疏模式
find查找非零元素的索引和值
full将稀疏矩阵转换为满存储

特征值和奇异值

eigs特征值和特征向量的子集
svds奇异值和向量的子集
normest2-范数估值
condest1-范数条件数估计

结构分析

sprank结构秩
etree消去树
symbfact符号分解分析
spaugment构造最小二乘增广方程组
dmpermDulmage-Mendelsohn 分解
etreeplot绘制消去树
treelayout设置树或森林的布局
treeplot绘制树形图
gplot对表示邻接矩阵的节点和链接绘图
unmesh将边矩阵转换为坐标和拉普拉斯矩阵

迭代法和预条件子

pcg预处理共轭梯度法
minres最小残差法
symmlq对称的 LQ 方法
gmres广义最小残差法(通过重新启动)
bicg双共轭梯度法
bicgstab双共轭梯度稳定法
bicgstabl双共轭梯度稳定法 (l)
cgs共轭梯度二乘法
qmr拟最小残差法
tfqmr无转置拟最小残差法
lsqrLSQR 方法
equilibrate缩放矩阵以改善条件
ichol不完全 Cholesky 分解
ilu不完全 LU 分解

重排序算法 

dissect嵌套剖分置换
amd近似最小度置换
colamd列近似最小度排列
colperm基于非零项计数的稀疏列置换
dmpermDulmage-Mendelsohn 分解
randperm随机置换
symamd对称近似最小度置换
symrcm稀疏反向 Cuthill-McKee 排序

工作区变量和MAT文件

load将文件变量加载到工作区中
save将工作区变量保存到文件中
matfile直接访问和更改 MAT 文件中的变量,而不加载到内存中
disp显示变量的值
who列出工作区中的变量
whos列出工作区中的变量及大小和类型
clear从工作区中删除项目、释放系统内存
clearvars清除内存中的变量
openvar在变量编辑器或其他图形编辑工具中打开工作区变量
工作区浏览器打开工作区浏览器以管理工作区
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岳小诺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值