速查表

MATLAB 基础函数参考

使用 MATLAB 增强 Python

将 MATLAB 的高级工具直接集成到您的 Python 工作流中。

MATLAB 环境

clc 清空命令行窗口
help fun 显示 fun 的内嵌帮助
doc fun 打开 fun 的文档
load("filename","vars") 从 .mat 文件加载变量
uiimport("filename") 打开交互式导入工具
save("filename","vars") 将变量保存到文件
clear item 从工作区中移除项目
examplescript 运行名为 examplescript 的脚本文件
format style 设置输出显示格式
ver 获取已安装工具箱的列表
tic, toc 启动和停止计时器
Ctrl+C 中止当前计算

定义和更改数组变量

a = 5 定义值为 5 的变量 a

A = [1 2 3; 4 5 6]

A = [1 2 3

4 5 6]

将 A 定义为 2×3 矩阵,由“空格”分隔列,由“;”或换行分隔行
[A,B] 水平串联数组
[A;B] 垂直串联数组
x(4) = 7 将 x 的第四个元素更改为 7
A(1,3) = 5 将 A(1,3) 更改为 5
x(5:10) 获取 x 的第五个到第十个元素
x(1:2:end) 获取 x 的奇数位元素(从首到尾)
x(x>6) 列出大于 6 的元素
x(x==10)=1 按条件更改元素
A(4,:) 获取 A 的第 4 行
A(:,3) 获取 A 的第 3 列
A(6, 2:5) 获取 A 的第六行中的第二个到第五个元素
A(:,[1  7])=A(:,[7  1]) 交换第一列和第七列
a:b [a, a+1, a+2 ..., a+n],其中 a+n≤b
a:ds:b 创建等间距向量,间距为 ds
linspace(a,b,n) 创建包含 n 个等间距值的向量
logspace(a,b,n) 创建包含 n 个对数间距值的向量
zeros(m,n) 创建由零组成的 m×n 矩阵
ones(m,n) 创建由 1 组成的 m×n 矩阵
eye(n) 创建 n×n 的单位矩阵
A=diag(x) 从向量创建对角矩阵
x=diag(A) 获取矩阵的对角线元素
meshgrid(x,y) 创建二维和三维网格
rand(m,n), randi 创建均匀分布的随机整数
randn(m,n) 创建正态分布的随机数

运算符和特殊字符

+, -, *, / 矩阵数学运算
.*, ./ 数组乘除(按元素运算)
^, .^ 矩阵幂;数组幂
\ 左除或线性优化
.', ' 普通转置;复共轭转置
==, ~=, <, >, <=, >= 关系运算符
&&, ||, ~, xor 逻辑运算(AND、NOT、OR、XOR)
; 隐藏输出显示
... 续行号(带断行)
% 描述 注释
'Hello' 定义字符向量
"This is a string" 定义字符串
str1 + str2 追加字符串

特殊变量和常量

ans 最近计算的答案
pi π=3.141592654…
i, j, 1i, 1j 虚数单位
NaN, nan 非数字(即除以零)
Inf, inf 无穷
eps 浮点相对精度

复数

i, j, 1i, 1j 虚数单位
real(z) 复数的实部
imag(z) 复数的虚部
angle(z) 相位角(以弧度为单位)
conj(z) 按元素复共轭
isreal(z) 确定数组是否为实数数组

初等函数

sin(x), asin 正弦和反正弦(参数以弧度为单位)
sind(x), asind 正弦和反正弦(参数以度为单位)
sinh(x), asinh 双曲正弦和反正弦(参量以弧度为单位)
其他类似的三角函数:costancscseccot
abs(x) x 的绝对值、复数的模
exp(x) x 的指数
sqrt(x), nthroot(x,n) 平方根、实数的第 n 次实根
log(x) x 的自然对数
log2(x), log10 以 2 为底的对数;以 10 为底的对数
factorial(n) n 的阶乘
sign(x) x 的符号
mod(x,d) 除后的余数(取模)
ceil(x), fix, floor 向正无穷、0、负无穷取整
round(x) 取整至最接近的小数或整数

绘图

plot(x,y,LineSpec)
线型:-, --, :, -.
标记:+, o, *, ., x, s, d
颜色:r, g, b, c, m, y, k, w
绘制 y 对 x 的图
LineSpec 为可选项)
LineSpec 以字符串形式规定 linestylemarkercolor
示例:"-r" = 无标记的红色实线
title("Title") 添加绘图标题
legend("1st", "2nd") 将图例添加到坐标区
x/y/zlabel("label") 添加 x/y/z 轴标签
x/y/zticks(ticksvec) 获取或设置 x/y/z 轴刻度
x/y/ztickangle(angle) 旋转 x/y/z 轴刻度标签
x/y/zlim 获取或设置 x/y/z 轴范围
axis(lim), axis style 设置坐标轴范围和样式
text(x,y,"txt") 添加文本说明
grid on/off 显示/隐藏坐标区网格线
hold on/off 添加新绘图时保留/清空当前绘图
subplot(m,n,p),
tiledlayout(m,n)
在各个分块位置创建坐标区
yyaxis left/right 创建第二个 y 轴
figure 创建图窗窗口
gcf, gca 获取当前图窗,获取当前坐标轴
clf 清空当前图窗
close all 关闭打开的图窗

table(var1,...,varN) 基于变量 var1、…、varN 中的数据创建表
readtable("file") 基于文件创建表
array2table(A) 将数值数组转换为表
T.var 从变量 var 中提取数据
T(rows,columns),
T(rows,["col1","coln"])
使用 T 中的指定行和列创建一个新表
T.varname=data 将数据 data 赋给 T 中的(新)列
T.Properties 访问 T 的属性
categorical(A) 创建分类数组
summary(T), groupsummary 输出表的摘要
join(T1, T2) 使用公共变量联接表

任务(实时编辑器)

实时编辑器任务是一系列 App,可以添加到实时脚本中,从而交互式执行一组特定操作。任务代表一系列 MATLAB 命令。要查看任务运行的命令,可以显示生成的代码。

桌面工具条的“实时编辑器”选项卡提供以下常用任务:

  • 清洗缺失数据
  • 查找变化点
  • 去趋势
  • 清理离群值
  • 求局部极值
  • 平滑数据

编程方法

函数
% 将函数保存在函数文件中或 
% 脚本文件的末尾。函数文件必须与 
% 第一个函数同名 
function cavg = cumavg(x) % 可以有多个参量
 cavg=cumsum(x)./(1:length(x)) ; 
end
匿名函数
% 通过函数句柄定义 
fun = @(x) cos(x.^2)./abs(3*x);

控制结构

ifelseif、条件
if n<10
 disp("n smaller 10") 
elseif n<=20 
 disp("n between 10 and 20") 
else 
 disp("n larger than 20")
Switch Case
n = input("Enter an integer: "); 
switch n 
 case -1
 disp("negative one")
 case {0,1,2,3} % 同时检查四种情形 
 disp("integer between 0 and 3") 
 otherwise
 disp("integer value outside interval [-1,3]") 
end % 控制结构以 end 结尾
for 循环
% 循环特定次数,并使用
% 递增的索引变量跟踪
% 每次迭代 
for i = 1:3 
 disp("cool"); 
end % 控制结构以 end 结尾
while 循环
% 只要条件仍然为真就继续循环
n = 1; 
nFactorial = 1; 
while nFactorial < 1e100 
 n = n + 1; 
 nFactorial = nFactorial * n; 
end % 控制结构以 end 结尾

更多编程/控制命令

break 终止执行 for 或 while 循环
continue 将控制传递给循环的下一迭代
try, catch 执行语句并捕获产生的错误

数值法

fzero(fun,x0) 非线性函数的根
fminsearch(fun,x0) 求函数的最小值
fminbnd(fun,x1,x2) 求 fun 在 [x1, x2] 区间上的最小值
fft(x), ifft(x) 快速傅里叶变换及逆变换

积分和微分

integral(f,a,b) 数值积分(类似还有二维和三维的函数)
trapz(x,y) 梯形数值积分
diff(X) 差分和近似导数
gradient(X) 数值梯度
curl(X,Y,Z,U,V,W) 旋度和角速度
divergence(X,...,W) 计算向量场的散度
ode45(ode,tspan,y0) 求解非刚性常微分方程组
ode15s(ode,tspan,y0) 求解刚性常微分方程组
deval(sol,x) 计算微分方程的解
pdepe(m,pde,ic,...bc,xm,ts) 求解一维偏微分方程
pdeval(m,xmesh,...usol,xq) 对偏微分方程的数值解进行插值

插值和多项式

interp1(x,v,xq) 一维插值(类似还有二维和三维的函数)
pchip(x,v,xq) 分段三次 Hermite 多项式插值
spline(x,v,xq) 三次样条数据插值
ppval(pp,xq) 计算分段多项式
mkpp(breaks, coeffs) 生成分段多项式
unmkpp(pp) 提取分段多项式详细信息
poly(x) 具有指定根 x 的多项式
polyeig(A0,A1,...,Ap) 多项式特征值问题的特征值
polyfit(x,y,d) 多项式曲线拟合
residue(b,a) 部分分式展开/分解
roots(p) 多项式根
polyval(p,x) 计算多项式 p 在点 x 处的值
polyint(p,k) 多项式积分
polyder(p) 多项式微分

矩阵和数组

length(A) 数组最大维度的长度
size(A) 数组维度
numel(A) 数组中的元素数目
sort(A) 对数组元素排序
sortrows(A) 对数组行或表行进行排序
flip(A) 翻转数组中的元素顺序
squeeze(A) 删除长度为 1 的维度
reshape(A,sz) 重构数组
repmat(A,n) 重复数组副本
any(A), all 检查是否有任何元素非零;检查是否所有元素非零
nnz(A) 非零数组元素的数目
find(A) 非零元素的索引和值

描述性统计量

sum(A), prod 求和或乘积(沿列)
max(A), min, bounds 最大和最小元素
mean(A), median, mode 统计运算
std(A), var 标准差和方差
movsum(A,n), movprod, movmax, movmin, movmean, movmedian, movstd, movvar 移动统计量函数,n = 移动窗的长度
cumsum(A), cumprod, cummax, cummin 累积统计量函数
smoothdata(A) 平滑含噪数据
histcounts(X) 计算直方图 bin 计数
corrcoef(A), cov 相关系数;协方差
xcorr(x,y), xcov 互相关;互协方差
normalize(A) 归一化数据
detrend(x) 去多项式趋势
isoutlier(A) 查找数据中的离群值

线性代数

rank(A) 矩阵的秩
trace(A) 矩阵对角线元素之和
det(A) 矩阵的行列式
poly(A) 矩阵的特征多项式
eig(A), eigs 矩阵的特征值和特征向量(或其子集)
inv(A), pinv 矩阵的逆;矩阵的伪逆
norm(x) 向量或矩阵的范数
expm(A), logm 矩阵指数;矩阵对数
cross(A,B) 叉积
dot(A,B) 点积
kron(A,B) Kronecker 张量积
null(A) 矩阵的零空间
orth(A) 适用于矩阵范围的标准正交基
tril(A), triu 矩阵的下三角和上三角部分
linsolve(A,B) 求解形式为 AX=B 的线性方程组
lsqminnorm(A,B) 线性方程的最小二乘解
svd(A) 奇异值分解
gsvd(A,B) 广义奇异值分解
rref(A) 简化行阶梯形矩阵

符号数学*

sym x, syms x y z 声明符号变量
eqn = y == 2*a + b 定义符号方程
solve(eqns,vars) 求解关于变量的符号表达式
subs(expr,var, val) 代换表达式中的变量
expand(expr) 展开符号表达式
assume(var, assumption) 对变量作假设
assumptions(z) 显示符号对象的假设
fplot(expr)、fcontour、fsurf、fmesh、fimplicit 用于符号对象的绘图函数
diff(expr,var,n) 求符号表达式的导数
dsolve(deqn,cond) 符号化求解微分方程
int(expr,var,[a, b]) 求符号表达式的积分
taylor(fun,var,z0) 函数的泰勒展开