第 1 章 用户界面1.1 科学计算概述1.1.1 发展历程1.1.2 系统1.1.3 特点1.2 工作界面1.2.1 标题栏1.2.2 功能区1.2.3 工具栏1.2.4 命令行窗口1.2.5 历史记录窗口1.2.6 当前文件夹窗口1.2.7 工作区窗口1.2.8 图像窗口第 2 章 帮助系统2.1 内容及查找2.1.1 搜索路径2.1.2 扩展搜索路径2.2 帮助系统2.2.1 联机帮助系统2.2.2 帮助命令2.2.3 联机网络系统2.2.4 网络资源第 3 章 基础知识3.1 命令组成3.1.1 基本符号3.1.2 功能符号1. 快捷键2. 标点3.1.3 常用指令1. 常用操作命令2. 键盘操作技巧3.2 数据类型3.2.1 变量与常量1. 变量2. 常量3.2.2 数值1. 数值类型2. 显示格式3.3 运算符3.3.1 算术运算符3.3.2 关系运算符3.4 函数运算3.4.1 复数运算3.4.2 三角函数第 4 章 向量与多项式4.1 向量4.1.1 向量的生成4.1.2 向量的引用4.1.3 向量运算4.2 多项式4.2.1 多项式的创建4.2.2 数值多项式的运算4.3 特殊变量4.3.1 单元型变量4.3.2 结构型变量第 5 章 矩阵运算5.1 矩阵5.1.1 矩阵定义5.1.2 矩阵生成5.1.3 特殊矩阵5.1.4 矩阵元素运算5.2 矩阵数学运算5.2.1 加减5.2.2 乘法5.2.3 除法5.3 矩阵运算5.3.1 幂函数5.3.2 逆矩阵5.3.3 条件数5.3.4 范数5.4 矩阵分解5.4.1 楚列斯基分解5.4.2 LU 分解5.4.3 LDM
桌面工具和开发环境
数学函数库
语言
图形处理
外部接口
选项卡
主页、绘图、APP
退出
exit、quit、Alt+F4
关闭当前已打开的文件
close all
设置路径
pathtool
保存变量
1save(filename)2save(filename,variables) % variables 也要用单引号引起来.3save(filename,variables,fmt)4save(filename,variables,version)5save(filename,variables,version,'-nocompression')6save(filename,variables,'-append')7save(filename,variables,'-append','-nocompression')8save filename加载变量
xxxxxxxxxx71load(filename)2load(filename,variables)3load(filename,'-ascii')4load(filename,'-mat')5load(filename,'-mat',variables)6S = load(___)7load filename
得到所有搜索路径
path
将所有搜索路径连接成一个长字符串
genpath
设置路径对话框
path(path, 'D:\MATLAB\matlabfile')
addpath 'D:\MATLAB\matlabfile' -begin
pathtool
doc
doc name
help 系列命令
help:最近使用命令、在线帮助文档
help function 或 help className
调用联机帮助窗口:helpwin、helpdesk
其它帮助指令
| 命令 | 说明 | 命令 | 说明 |
|---|---|---|---|
| lookfor | 搜索函数关键字 | exist | 变量检验函数 |
| who | 内存变量列表 | whos | 内存变量详细信息 |
| what | 目录中的文件列表 | which | 确定文件的位置 |
主演示页面
资源 - 帮助 - 示例
demos 命令
附加功能
| 按键 | 功能 | 按键 | 功能 |
|---|---|---|---|
| Ctrl + | 左移一个字 | Alt + Backspace | 删除到行尾 |
| Ctrl + | 右移一个字 | Esc | 清除一行 |
| Ctrl + Enter | 运行脚本 |
| 标点 | 定义 | 标点 | 定义 |
|---|---|---|---|
| [] | 矩阵定义 | {} | 单元数组 |
| . | 域访问符 | % | 注释标记 |
| ! | 调用操作系统运算 | ' | 字符串标记符 |
| ; | 不显示运算结果 | ... | 续行号 |
| 命令 | 功能 | 命令 | 功能 |
|---|---|---|---|
| cd | 显示或改变工作目录 | pwd | 显示当前路径 |
| clf | 清楚图形窗口 | hold | 保持图形 |
| diary | 日志文件 | load | 加载变量 |
| dir | 显示当前目录下的文件 | pack | 整理内存碎片 |
| echo | 命令行窗口信息显示开关 | path | 显示搜索目录 |
| save | 保存内存变量 | type | 显示文件内容 |
| warning | 警告 | disp | 输出 |
| 键盘按键 | 说明 | 键盘按键 | 说明 |
|---|---|---|---|
| 重新调用前一行命令 | Home | 移动到行首 | |
| 重新调用下一行命令 | End | 移动到行尾 |
必须以字母开头,仅含字母、数字、下划线
区分大小写
不超过 31 个字符
函数文件内通过关键词 global 声明变量为全局变量
| 常量 | 说明 | 常量 | 说明 |
|---|---|---|---|
| ans | 默认变量 | pi | 圆周率 |
| eps | 浮点运算相对精度 | inf | 无穷大 |
| NaN / nan | 非数 | i(j) | 复数单位 |
| realmin | 最小正浮点数 | realmax | 最大正浮点数 |
clear pi:恢复预定义变量的初始值
整型
浮点型
十进制形式
指数形式
3E6
0.5e5
float:7 位有效数字
double:16位有效数字
复数
a + bi 或 a + bj
a + b*i 或 a + b*j
| 调用格式 | 说明 | 调用格式 | 说明 |
|---|---|---|---|
| format short | 5位定点(默认) | format long | 15位定点 |
| format short e | 5位浮点 | format long e | 15位浮点 |
| format short g | 自动选择 | format long g | 自动选择 |
| format hex | 十六进制 | format bank | 美元美分 |
| format rat | 有理数 | format + | 矩阵简记 |
| format compact | 变量间没有空行 | format loose | 有空行 |
| 运算符 | 定义 | 运算符 | 定义 |
|---|---|---|---|
| / | 右除 | ' | 共轭转置 |
| \ | 左除 | .' | 转置 |
| 运算符 | 定义 | 运算符 | 定义 |
|---|---|---|---|
| 非 | 不等于 | ||
| and(a, b) | 与 | or(a, b) | 或 |
| not(a) | 非 | xor(a, b) | 异或 |
| any(x) | all(x) |
| 函数 | 功能 | 函数 | 功能 | 函数 | 功能 |
|---|---|---|---|---|---|
| abs | 模 | angle | 相角 | complex | 构造复数 |
| real | 实部 | imag | 虚部 | conj | 共轭 |
| unwrap | 调整相位 | isreal | 判断实数 | cplxpair | 排列复共轭对 |
注意:MATLAB 中矩阵元素 按列计数,从上到下,从左到右,下标和文件读取时均如此!
直接输入
[a, b; c, d]
[a b; c d]
冒号法
first : last
fist : step : last
linspace(first, last, number)
logspace(first, last, number)
x(n)
x(n1:n2)
四则运算
点积
dot(a, b)
dot(a, b, dim)
叉积
cross(a, b)
cross(a, b, dim)
size(a, dim) 和 size(b, dim) 都等于 3.
混合积
dot(a, cross(b, c))
符号多项式
'ax^n + bx^(n-1)'
数值多项式
通过系数
p = [1, 2, 3];
poly2sym(p);
通过根
root = [1 2 3+i]
p = poly(root)
poly2sym(p)
乘法(卷积)
conv(p1, p2)
除法(解卷)
[q, r] = deconv[p1, p2]
导数
polyder(p)
创建和引用
赋值语句(大括号)
E = {A, B; C, D}
预分配存储空间:cell
E = cell(1, 3)
E{1, 1} = [1:4]
函数
| 函数 | 说明 | 函数 | 说明 |
|---|---|---|---|
| cell | 生成单元型变量 | cellfun | cellfun('islogical', E) |
| celldisp | celldisp(c), celldisp(c, 'name') | cellplot | 用图形显示 |
| num2cell | 数值 | deal | 输入输出处理 |
| cell2struct | 单元型 | struct2cell | 结构型 |
| iscell | 判断单元型 | reshape | 改变结构 |
创建和引用
s = struct('field1', {}, 'field2', {},···)
s = struct('field1', values1, 'field2', values2,···)
函数
| 函数 | 说明 | 函数 | 说明 |
|---|---|---|---|
| struct | 创建 | isstruct | 判断 |
| fieldnames | 得到属性名 | getfield | 得到属性值 |
| setfield | 设定属性值 | rmfield | 删除属性 |
| isfield | 判断 | cell2struct | 类型转换 |
直接输入法
[[1, 2 3]; 4 5,6+i]
利用 M 文件创建 .m
M 文件
命令式文件
函数式文件
输入文件名(无后缀)
变量名与文件名不能相同
需添加至 当前文件夹 或者 MATLAB路径
利用文本文件创建 .txt
load input.txt
data = load('input.txt')
文件名即矩阵变量名
| 函数 | 说明 | 函数 | 说明 |
|---|---|---|---|
| eye(n) | ones(m, n) | 全1矩阵 | |
| eye(m, n) | zeros(m, n) | 零矩阵 | |
| eye(size(A)) | 同上 | rand(m, n) | 随机矩阵 |
| compan(P) | 伴随矩阵 | diag(v) | 对角阵 |
| hilb(n) | Hilbert 矩阵 | magic(n) | 幻方 |
| invhilb(n) | Hilbert 逆矩阵 | sparse(A) | 稀疏矩阵 |
1. 修改
扩充
A = [A; B C]
删除
A(m, :) = []
赋值
A(m, n) = a
A(m, :) = v
A(:, n) = v
2. 变维
reshape 函数
B = reshape(A, m, n)
冒号法
C = zeros(m, n)
C(:) = A(:)
3. 变向
| 命令 | 说明 | 命令 | 说明 |
|---|---|---|---|
| rot90(A) | 逆时针旋转 | rot90(A, k) | 旋转 k 次 |
| fliplr(X) | 左右翻转 | filpdim(X, 1) | 左右翻转 |
| flipud(X) | 上下翻转 | flipdim(X, 2) | 上下翻转 |
4. 抽取
| 命令 | 说明 | 命令 | 说明 |
|---|---|---|---|
| diag(X) | 主对角线 | tril(X) | 主下三角部分 |
| diag(X, k) | 第 k 条主对角线 | tril(X, k) | 第 k 条对角线下面(包括) |
| diag(v) | 非方阵 | triu(X) | 主上三角部分 |
| diag(v, k) | 非方阵 | triu(X, k) | 第 k 条对角线上面(包括) |
A
1. 数乘运算
a * A
2. 矩阵乘法
A * B
3. 点乘
A .* B
1. 左除
A \ B
inv(A) * B
A .\ B
2. 右除
A^k
inv(A)
逆条件数值:rcond(A)
实例:矩阵更新函数
cond(A)
向量
矩阵
矩阵函数
| 函数 | 说明 | 函数 | 说明 |
|---|---|---|---|
| cond(A) | 条件数值 | diag() | 对角变换 |
| conest(A) | 1-范数矩阵条件数值 | expm(A) | 矩阵指数 |
| det(A) | 行列式 | logm(A) | 对数运算 |
| eig(A) | 特征值 | sqrtm(A) | 开方运算 |
| inv(A) | 逆矩阵 | cdf2rdf(A) | 复数对角 |
| norm(A) | 欧式范数 | rref(A) | |
| normest(A) | 欧式范数估值 | rsf2csf(A) | 实数块对角 |
| rank(A) | 矩阵的秩 | rot90(A) | 矩阵旋转 |
| orth(A) | 正交化 | fliplr(A) | 左右翻转 |
| rcond(A) | 逆条件数值 | flipud(A) | 上下翻转 |
| trace(A) | 矩阵的迹 | flipdim(A, dim) | 上下(左右)翻转 |
| triu(A) | 上三角变换 | reshape(A, m, n) | 矩阵变维 |
| tril(A) | 下三角变换 | funm(A, fun) | 矩阵函数 |
R = chol(A)
[R, p] = chol(A)
[L, U] = lu(A)
[L, U, P] = lu(A)
qr 命令
R = qr(A, 0)
[Q, R] = qr(A)
[Q, R, E] = qr(A, 0)
[C, R] = qr(A, b)
qrdelete 命令
qrinsert 命令
| 命令 | 说明 |
|---|---|
| hold on / off | 打开 / 关闭绘图保持命令 |
| axis( [xmin, xmax, ymin, ymax] ) | 调整坐标轴范围 |
| sym x | fplot 用于绘制函数符号图形 |
| figure | 新建图层 |
| close all | 关闭打开的 MATLAB 文件 |
| clf() | 不关闭图形窗口,仅清除内容 |
| grid on / off | 显示 / 隐藏分割线 |
| box on / off | 坐标区是否紧密围绕数据 |
1. plot(x)
2. 多图形显示
subplot()
| 调用格式 | 说明 | 调用格式 | 说明 |
|---|---|---|---|
| subplot(m, n, p) | 当前窗口分割成 m | subplot(m, n, p, 'replace') | 删除位置 p 处的现有坐标区并创建新坐标区 |
| subplot(m, n, p, 'align') | 设置对齐 | subplot(m, n, ax) | 绘制至 ax 坐标区 |
| subplot('Position', pos) | pos = [left, bottom, width, height] | subplot(···, Name, Value) | 设置属性值 |
| ax = subplot(···) | 返回图形句柄 | subplot(ax) | 根据 ax 坐标区绘制 |
tiledlayout()
| 调用格式 | 说明 | 调用格式 | 说明 |
|---|---|---|---|
| tiledlayout(m ,n) | tiledlayout('flow') | ||
| tiledlayout(···, Name, Value) | tiledlayout(parent, ···) | ||
| t = tiledlayout(···) |
nexttile()
| 调用格式 | 说明 | 调用格式 | 说明 |
|---|---|---|---|
| nexttile | 切换至下一窗口 | nexttile(tilenum) | 切换至第 tilenum 个窗口 |
| nexttile(span) | span = [r c] | nexttile(tlienum, span) | 设置坐标区大小范围 |
| nexttile(t, ···) | 将 t 指定的分块图布局中防止坐标区对象 | ax = nexttile(···) | 返回坐标区 |
3. plot(x, y)
x 是向量,y 有一维与 x 等维
x 是矩阵,y 是向量,以 y 为横坐标
x、y 是同维矩阵
4. plot(x1, y1, x2, y2, ···)
5. plot(x, y, s)
颜色控制字符表
线型符号
线型控制字符表
曲线的属性
6. plot(x1, y1, s1, ···)
可以使用 sym x
| 调用格式 | 说明 |
|---|---|
| fplot(f) | f = @(x)sin(x) |
| fplot(f, lim) | lim = [xmin, xmax] |
| fplot(f, lim, s) | s 为 线型 |
| fplot(f, lim, n) | 至少描出 n+1 个点 |
| fplot(funx, funy) | x = funx(t), y = funy(t), t 默认间隔 [-5, 5] |
| fplot(funx, funy, tinterval) | tinterval = [tmin, tmax] |
| fplot(···, LineSpec) | 指定线条样式、标记符号、线条颜色 |
| fplot(···, Name, Value) | 使用一个或多个 键值对 |
| fplot(a, ···) | 绘制到由 ax 指定的轴中 |
| fp = fplot(···) | 使用 FP 查询和修改特定行的属性 |
| [X, Y] = fplot(f, lim, ···) | 返回横纵坐标值,不绘制图像 |
| 调用格式 | 说明 |
|---|---|
| polarplot(theta, rho) | theta 与 rho 为同型矩阵(向量) |
| polarplot(theta, rho, LineSpec) | 设置线性、标记符号、颜色 |
转换成直角坐标系
xxxxxxxxxx31[x, y] = pol2cart(t, r);2figure3plot(x, y)
| 调用格式 | 说明 |
|---|---|
| semilogx(Y) | 若 Y 为复矩阵,则相当于 semilogx(real(Y), imag(Y)) |
| semilogx(X1, Y1, ···) | 绘制 Y1 对 X1的图像 |
| semilogx(X1, Y1, LineSpec, ···) | 设置线条样式 |
| semilogx(···, 'ProrpertyName', PropertyValue, ···) | 设置属性值 |
| semilogx(x, ···) | 在由 ax 指定的坐标区中创建线条 |
| h = semilogx(···) | 返回 line 图形句柄向量,每条线对应一个句柄 |
loglog(x, y) 调用格式同上
| 调用格式 | 说明 |
|---|---|
| yyaxis left | 用左边的 y 轴画出数据图 |
| yyaxis right | 用右边的 y 轴画出数据图 |
| yyaxis(ax, ···) | 指定 ax 坐标区的活动侧为左或右 |
| 调用格式 | 说明 |
|---|---|
| figure | 创建一个图形窗口 |
| figure(n) | 创建编号为 n 的图形窗口 |
| figure(f) | 将 f 作为当前图形窗口 |
| f = figure(···) | 返回 Figure 对象 |
| figure('PN', PV) | 设置属性名的属性值 |
其它命令
| 命令 | 说明 |
|---|---|
| set(n) | 返回此窗口所有图形的 属性名 和 所有可能的属性值 |
| get(n) | 返回此窗口所有图形的 属性名 和 当前的属性值 |
| close | 关闭图形窗口 |
| clf() | 不关闭图形窗口,仅清除内容 |
| clf(rest) | 清除内容后,将除了位置和单位的所有属性设为 默认状态 |
坐标系的调整
axis(xmin, xmax, tmin, ymax, zmin, zmax, cmin, cmax)
坐标轴控制
| 调用格式 | 说明 |
|---|---|
| axis(limits) | |
| axis style | 设置轴范围和尺度,进行限制和缩放,如 normal、equal、image、image fill、tight |
| axis mode | 设置是否自动选择范围,如 'auto x' |
| axis ydirection | 默认值为 manual |
| axis visibility | 默认值为 'on',即显示坐标区背景 |
| lim = axis | 返回平面坐标系 / 三维坐标系 / 极坐标系 的范围 |
| [m, v, d] = axis('state') | 返回坐标轴范围选择、做抱起可见性和 y 轴方向的当前设置 |
| ··· = axis(ax, ···) | 使用 ax 指定的坐标区或极坐标区 |
参数
| 参数 | 取值 |
|---|---|
| mode | 'auto' 或 'manual' 或 'semiautomatic' |
| visibility | 'on' 或 'off' |
| ydirection | ‘xy' 或 'ij' |
| 调用格式 | 说明 |
|---|---|
| fill(X, Y, C) | 顶点颜色由向量或矩阵 C 指定。可以封闭或不封闭 |
| fill(X, Y, ColorSpec) | 使用指定颜色填充 |
| fill(X1, Y1, C1, ···) | 同上 |
| fill(···, 'PN', PV) | 指定属性名和属性值 |
| fill(ax, ···) | 在 ax 指定的坐标区中 |
| h = fill(···) | 返回由补片对象构成的向量 |
| 调用格式 | 说明 |
|---|---|
| title('text') | 坐标轴上方正中央的标题 |
| title(target, 'text') | 添加至指定的对象 |
| title('text', 'PN', PV, ···) | 设置属性名的属性值 |
| h = title(···) | 返回作为标题的 text 对象句柄 |
可以利用
gcf和gca获取当前图形窗口与当前坐标轴的句柄
| 调用格式 | 说明 |
|---|---|
| xlabel('string') | 在 x 轴上标注说明语句 string |
| xlabel(fname) | 由函数 fname 返回字符串后显示 |
| xlabel('text', 'PN', PV) | 设置属性名的属性值 |
| 命令 | 说明 |
|---|---|
| text | 在图形具体部位标注 |
| gtext | 在图形具体部位标注 |
| 调用格式 | 说明 |
|---|---|
| text(x, y, 'string') | 在 (x, y) 处显示 string |
| text(x, y, z, 'string') | 在 (x, y, z) 处显示 string |
| text(x, y, z, 'string', 'PN', PV, ···) | 设置属性(可以使用 get 和 set 查看) |
| text(ax, ···) | 在坐标区 ax 进行文本标注 |
| t = text(···) | 返回一个或多个文本对象 t |
| 调用格式 | 说明 |
|---|---|
| gtext('string', 'PV', PV, ···) | 通过移动鼠标进行定位 |
| 调用格式 | 说明 |
|---|---|
| legend('string1', 'string2', ···, Pos) | 在当前坐标轴所给数据的每一部分显示一个图例 |
| legend(subset, 'string1', 'string2', ···) | 仅在图例中包括 subset 中列出的数据序列的项 |
| legend(labels) | 使用字符向量元宝数组、字符串数组或字符矩阵 |
| legend(target, ···) | 在 target 指定的坐标区或图中添加图例 |
| legend(vsbl) | 控制图例的可见性, vsbl 可设置为 hide、show 或 toggle |
| legend(bkgd) | 删图例背景和轮廓,默认值为 'boxon',即显示 |
| legend('off') | 从当前的坐标轴中移除图例 |
| legend | 为每个绘制的数据序列创建一个带有描述性标签的图例 |
| legend(···, Name, Value) | 元胞数组指定标签后,用键值对设置图例属性 |
| legend(···, 'Location', lcn) | 设置图例位置, 'Location' 包括 'north' 、'south'、'northwest' 等 |
| legend(···, 'Orientation', ornt) | 默认值为 'vertical',可设为 'horizontal' |
| lgd = legend(···) | 返回 Legend 对象 |
| h = legend(···) | 返回图例的句柄向量 |
| 调用格式 | 说明 |
|---|---|
| grid on / off | 显示主网格线 |
| grid | 切换显示状态 |
| grid minor | 次网格线 |
| grid(target, ···) | 使用由 target 指定的坐标区域或图 |
| 调用格式 | 说明 |
|---|---|
| bar(y) | y 可为向量或矩阵 |
| bar(x, y) | 在递增的横坐标 x 上画出 y |
| bar(···, width) | 设置条形的相对宽度及间距,默认为 0.8,若为 1 则相互接触 |
| bar(···, 'style') | 排列类型,默认为 'group',可选 'stack' |
| bar(···, color) | 用指定的颜色显示 |
| bar(ax, ···) | 绘制至 ax 坐标区中 |
| b = bar(···) | 返回一个或多个 Bar 对象 |
| 调用格式 | 说明 |
|---|---|
| area(Y) | 堆叠显示曲线 |
| area(X, Y) | X需要递增 |
| area(···, basevalue) | 指定区域填充的基值,默认为 0 |
| area(···, Name, Value) | 使用一个或多个键值对 |
| area(ax, ···) | 绘制至 ax 坐标区 |
| ar = area(···) | 返回一个或多个 Area 对象 |
| 调用格式 | 说明 |
|---|---|
| pie(X) | 若 sum(X) < 1,则画出一个不完整的饼形图 |
| pie(X, explode) | 将扇区从饼图便宜一定位置,explode 是与 X 同型的矩阵 |
| pie(X, labels) | 指定文本标签,标签数等于 X 的数据元素个数 |
| pir(X, explode, labels) | 同上 |
| pie(ax, ···) | 绘制至 ax 坐标区 |
| p = pie(···) | 返回一个由补片和文本图形对象组成的向量 |
| 调用格式 | 说明 |
|---|---|
| histogram(X) | 使用均匀宽度的 bin 涵盖 X 中元素范围 |
| histogram(X, nbins) | 使用标量 nbins 指定 bin 的数量 |
| histogram(X, edges) | 将 X 划分到由向量 edges 指定 bin 边界的 bin 内 |
| histogram('BinEdges', edges, 'BinCounts', counts) | 指定 bin 边界和关联的 bin 计数 |
| histogram(C) | 通过分裂数组 C 中的每个了捏绘制一个条形来绘制柱状图 |
| hisogram(C, Categories) | 仅绘制 Categories 指定的类别的子集 |
| histogram('Categories', Categories, 'BimCounts', counts) | 指定类别和关联的 bin 计数 |
| histogram(···, Name, Value) | 设置属性值 |
| histogram(ax, ···) | 绘制到指定的坐标区中 |
| h = histogram(···) | 返回 Histogram 对象 |
| 调用格式 | 说明 |
|---|---|
| polarhistogram(theta) | |
| polarhistogram(theta, nbins) | |
| polarhistogram('BinEdges', edges, 'BinCounts', counts) | |
| polarhistogram(···, Name, Value) | |
| polarhistogram(pax, ···) | |
| h = polarhistogram(···) |
| 调用格式 | 说明 |
|---|---|
| errorbar(y, err) | err 确定数据点上方和下方的每个误差条的长度 |
| errorbar(x, y, err) | 在每个数据点处绘制一个垂直误差条 |
| errorbar(···, ornt) | 设置误差条的方向,默认为 'vertical',可设为 'horizontal' 或 'both' |
| errorbar(x, y, neg, pos) | neg 确定数据点下方的长度,pos 确定上方的长度 |
| errorbar(x, y, yneg, ypos, xneg, xpos) | 同上 |
| errorbar(···, LineSpec) | 指定线型、标记符、颜色等 |
| error(···, Name, Value) | 设置属性值 |
| errorbar(ax, ···) | 绘制至 ax 坐标区 |
xxxxxxxxxx101x = -2 : 0.25 : 2;2y = x;3[X, Y] = meshgrid(x, y); %二维网格4Z = X.*exp(-X.^2 - Y.^2);5[U, V] = gradient(Z, 2, 2); %数值梯度,每个方向上的点间距为26contour(X, Y, Z) %等高线图7hold on8quiver(X, Y, U, V) %矢量图9hold off10axis image %将坐标轴调整为图形大小
| 命令 | 说明 |
|---|---|
| plot3、fplot3 | 三维曲线 |
| mesh、meshgrid、meshc、meshz | 网格图 |
| surf、surfc、surfl、fsurf | 三维曲面 |
| cylinder、sphere | 柱面与球面 |
| contour3、contour、contourf、contourc、fcontour | 等值线 |
若 x、y、z 均为行向量,
可以通过 scatter3(x, y, z, 1, z, 'filled'),
也可以用 meshc([x', x'], [y', y'], [z', z'], [z', z']).
| 调用格式 | 说明 |
|---|---|
| mesh(X, Y, Z) | Z 为矩阵,X 和 Y 为向量或矩阵 |
| mesh(Z) | [m, n] = size(Z), X = 1 : m, Y = 1 : n |
| mesh(Z, c) | 指定颜色 |
| mesh(ax, ···) | 指定坐标区 ax |
| mesh(···, 'PN', PV) | 设置属性值 |
| h = mesh(···) | 返回图形对象句柄 |
| 调用格式 | 说明 |
|---|---|
| [X, Y] = meshgrid(x, y) | X 为矩形分割点的横坐标值矩阵 |
| [X, Y] = meshgrid(X) | 即 [X, Y] = meshgrid(x, x) |
| [X, Y, Z] = meshgrid(x, y, z) | 同上 |
| [X, Y, Z] = meshgrid(x) | 即 [X, Y, Z] = meshgrid(x, x, x) |
| 调用格式 | 说明 |
|---|---|
| hidden on | 将网格设为不透明 |
| hidden off | 设为透明状态 |
| hidden | 在上述模式中切换 |
| hidden(ax, ···) | 修改 ax 指定的坐标区 |
xxxxxxxxxx111t = -4 : 0.1 : 4;2[X, Y] = meshgrid(t);3Z = peaks(X, Y); %山峰函数4subplot(1, 2, 1)5mesh(X, Y, Z);6hidden on7title('Grid unshown')8subplot(1, 2, 2)9mesh(X, Y, Z)10hidden off11title('Grid shown')画网格图与等高线图
画网格图与零平面的网格图
xxxxxxxxxx121x = -5 : 0.1 : 5;2[X, Y] = meshgrid(x);3Z = cos(sqrt(X.^2 + Y.^2));4tiledlayout(2, 2)5nexttile6plot3(X, Y, Z), title('plot3'); %三维线图7nexttile8mesh(X, Y, Z), title('mesh'); %三维曲面网格图9nexttile10meshc(X, Y, Z), title('meshc'); %三维曲面网格图,并显示等高线11nexttile12meshz(X, Y, Z), title('meshz'); %三维曲面网格图,并在网格周围显示帷幕
| 调用格式 | 说明 |
|---|---|
| fmesh(f) | 默认区间为 [-5, 5] |
| fmesh(f xyinterval) | xyinterval = [min, max] 或 [xmin, xmax, ymin, ymax] |
| fmesh(funx, funy, funz) | x = funx(u, v), y = funy(u, v), z = funz(u, v) |
| fmesh(funx, funy, funz, uvinterval) | 同上 |
| fmesh(···, LineSpec) | 设置网格的线型、标记符号、颜色 |
| fmesh(···, Name, Value) | 设置属性值 |
| fmesh(ax, ···) | 绘制至 ax 而非 gca |
| fs = fmesh(···) | 返回 FunctionSurface 或 ParameterizedFunctionSurface 对象 |
xxxxxxxxxx41syms x y2f = sin(x)*exp(y) - cos(y)*exp(x) + exp(x) + exp(y);3fmesh(f, [-pi, pi])4title('fmesh')
用法同mesh
含基本等高线
有亮度的曲面图
xxxxxxxxxx71[X, Y, Z] = peaks(30);2x = X(1, :);3y = Y(:, 1);4i = find(y>0.8 & y<1.2);5j = find(x>-.6 & x<.5);6Z(i, j) = nan*Z(i, j);7surf(X, Y, Z);
xxxxxxxxxx51syms s t;2x = cos(s+t);3y = sin(s+t);4z = sin(s)*cos(t);5fsurf(x, y, z, [-pi, pi])
| 调用格式 | 说明 |
|---|---|
| [X, Y, Z] = cylinder(r, n) | 半径为 r、高度为 1 的圆柱体的坐标轴坐标值,圆柱体的圆周有指定 n 个距离相同的点 |
| [X, Y, Z] = cylinder(r) | 即 [X, Y, Z] = cylinder(r, 20) |
| [X, Y, Z] = cylinder | 即 [X, Y, Z] = cylinder(1, 20) |
| cylinder(axes_handle, ···) | 绘制到带有句柄 axes_handle 的坐标区中 |
| cylinder(···) | 直接画出圆柱体,无输出产量 |
cylinder(r, n) 可以绘出 n 棱柱
| 调用格式 | 说明 |
|---|---|
| sphere(n) | 画出由 |
| sphere | 即 sphere(20) |
| sphere(ax, ···) | 绘制到 ax 坐标区中 |
| [X, Y, Z] = sphere(···) |
| 调用格式 | 说明 |
|---|---|
| contour3(Z) | 绘制等值线 |
| contour3(X, Y, Z) | 指定 X 和 Y 的坐标 |
| contour3(···, levels) | 在 levels 个自动选择的层级上显示等高线 |
| contour3(···, LineSpec) | 指定线型和颜色 |
| contour3(···, Name, Value) | 设置属性值 |
| contour3(ax, ···) | 绘制至 ax 坐标区 |
| M = contour3(···) | 返回包含每个层级顶点的坐标等高线矩阵 |
| [M, c] = contour(···) | 并返回等高线对象 c |
三维曲面向 x-y 平面投影的图像
填充二维等值曲线图
计算等值曲线矩阵 C,该矩阵可用于命令 contour、contour3、contourf
添加高度标签
| 调用格式 | 说明 |
|---|---|
| clabel(C, h) | C 为等高矩阵 |
| clabel(C, h, v) | 在指定高度 v 上显示标签 h |
| clabel(C, h, 'manual') | 手动设置标签(左键或空格) |
| t = clabel(C, h, 'manual') | 返回创建的文本对象 |
| claebl(C) | 在随机位置添加标签 |
| clabel(C, v) | 在给定的位置 v 上显示标签 |
| clabel(C, 'manual') | 通过鼠标给等高线贴标签 |
| tl = clabel(···) | 返回创建的文本和线条对象 |
| clabel(···, Name, Value) | 修改标签外观 |
| 调用格式 | 说明 |
|---|---|
| fcontour(f) | 绘制符号函数 |
| fcontour(f, xyinterval) | 在区域 xyinterval 内的三维曲面 |
| fcontour(···, LineSpec) | 设置线型和颜色 |
| fcontour(···, Name, Value) | 指定线条的属性 |
| fcontour(ax, ···) | 绘制至 ax 坐标区,而不是 gca |
| fc = fcontour(···) | 返回 FunctionContour 对象 |
| 调用格式 | 说明 |
|---|---|
| view(az, el) | 方位角 az 与仰角 el |
| view(v) | v = [az, el] 或 v = [x, y, z] |
| view(dim) | 对二维或三维绘图使用默认视角 |
| view(ax, ···) | 指定目标坐标区的视角 |
| [az, el] = view(···) | 返回方位角和仰角 |
正视图:view(0, 0)
侧视图:view(90, 0)
俯视图:view(0, 90)
view(20, 15)
| 调用格式 | 说明 |
|---|---|
| brighten(beta) | 增强色图的色彩强度 beta,-1 < beta < 1 |
| brighten(map, beta) | 指定为 map 的颜色图 |
| newmap = brighten(···) | 返回新的色图 |
| brighten(f, beta) | 变换为图窗 f 指定的颜色图的强度,其它图形对象的颜色也会受到影响 |
| 调用格式 | 说明 |
|---|---|
| caxis([cmin, cmax]) | 设置颜色的刻度 |
| caxis('auto') | 自动计算颜色范围(默认) |
| caxis('manual') | 冻结当前颜色坐标轴的刻度范围。hold 设置为 on 时,后面的图形命令使用相同的颜色范围 |
| caxis(tarfet, ···) | 为特定坐标区或图设置颜色图范围 |
| v = caxis | 返回当前颜色范围,v = [cmin, cmax] |
| 调用格式 | 说明 |
|---|---|
| colorbar | 在右侧显示垂直色轴 |
| colorbar(location) | 在特定位置显示色轴 |
| colorbar(···, Name, Value) | 修改色轴外观 |
| c = colorbar(···) | 返回一个指向色轴的句柄 |
| colorbar('off') | 删除当前坐标区或图的所有色轴 |
| colorbar(target, ···) | 在 target 指定的坐标区或图添加 |
| 调用格式 | 说明 |
|---|---|
| shading flat | 每一条线段与每一小面有相同的颜色 |
| shading faceted | 用重叠的黑色网格线来达到渲染的效果 |
| shading interp | 通过插值显示不同的颜色 |
| shading(axes_handle, ···) | 将着色类型应用于 axes_handle |
x1[X, Y] = meshgrid(-10 : 0.5 : 10);2Z = X.^2 + exp(sin(X));3
4subplot(2, 2, 1)5surf(X, Y, Z)6title('3d surface')7
8subplot(2, 2, 2)9surf(X, Y, Z)10shading flat11title('shading flat')12
13subplot(2, 2, 3)14surf(X, Y, Z)15shading faceted16title('default shading faceted')17
18subplot(2, 2, 4)19surf(X, Y, Z)20shading interp21title('shading interp')
xxxxxxxxxx41pcolor(hadamard(20)) %阿达玛矩阵2colormap(gray(2)) %灰度颜色图3axis ij %翻转 y 轴4axis square
| 调用格式 | 说明 |
|---|---|
| surfl(Z) | 生成三维带阴影曲面 |
| surfl(X, Y, Z) | 默认光源:从当前视角逆时针转 |
| surfl(···, 'light') | 用 MATLAB 光照对象 (light obbject) 生成 |
| surfl(···, s) | 指定光源与曲面之间的方位 s |
| surfl(X, Y, Z, s, k) | k = [ka, kd, ks, shine] = [0.55, 0.6, 0.4, 10] |
| surfl(ax, ···) | 绘制至 ax 坐标区 |
| h = surfl(···) | 返回曲面图形句柄向量 h |
环境光系数 ka、漫反射系数 kb、镜面反射系数 ks、镜面反射亮度 shine
xxxxxxxxxx101[X, Y] = meshgrid(-5 : 0.25 : 5);2Z = peaks(X, Y);3
4subplot(1, 2, 1)5surfl(X, Y, Z);6title('Outer light')7
8subplot(1, 2, 2)9surfl(X', Y', Z')10title('Inner light')
| 调用格式 | 说明 |
|---|---|
| lightangle(az, el) | 方位角 az,仰角 el |
| lightangle(ax, az, el) | 在 ax 指定的坐标区上 |
| light_handle = lightangle(···) | 返回 light 句柄 |
| lightangle(light_handle, az, el) | 设置至 light_angle |
| [az, el] = lightangle(light_handle) | 返回由 light_angle 确定的视角 |
| 调用格式 | 说明 |
|---|---|
| lighting flat | 每个面上产生均匀分布的光照 |
| lighting gouraud | 计算顶点法向量并在各个面中线性插值 |
| lighting none | 关闭光源 |
| lighting(ax, ···) | 设置至 ax 坐标区 |
xxxxxxxxxx201[x, y, z] = sphere;2subplot(1, 2, 1);3surf(x, y, z);4shading interp5%在指定坐标创建向无限远处照射的光源6light('position', [2, -2, 2], 'style', 'local')7lighting phong8axis equal9
10subplot(1, 2, 2)11surf(x, y, z, -z);12shading flat13light14%在每个面上产生均匀分布的光照15lighting flat16%创建黄色光源17light('position', [-1, -1, -2], 'color', 'y')18%在指定坐标创建向无限远处照射的白色光源19light('position', [-1, 0.5, 1], 'style', 'local', 'color', 'w')20axis equal
| 命令格式 | 说明 |
|---|---|
| A = imread(filename) | 从 filename 内容推断文件的格式 |
| A = imread(filename, fmt) | 指定格式为 fmt |
| A = imread(···, idx) | 读取多帧图像的 idx 帧 |
| A = imread(···, Name, Value) | 指定特定于格式的选项 |
| [A, map] = imread(···) | 将索引图像读入 A,颜色图读入 map |
| [A, map, alpha] = imread(···) | 返回透明度 alpha |
| 命令格式 | 说明 |
|---|---|
| imwrite(A, filename) | 从扩展名推断文件格式 |
| imwrite(A, map, filename) | 同时写入颜色映像矩阵 |
| imwrite(···, Name, Value) | 指定文件输出的其它参数 |
| imwrite(···, fmt) | 以指定的 fmt 格式写入 |
可以一次转换图片格式
默认保存方式为 unit8 的数据类型。
若图像矩阵是 double 型,则写入前应进行偏置,unit8(X-1)
| 命令格式 | 说明 |
|---|---|
| image(C) | 将矩阵 C 中的值以图像形式显示出来 |
| image(x, y, C) | 指定图像位置,其中 x、y 定义了 x、y轴范围 |
| image(···, Name, Value) | 在绘制图像前需要调用 newplot 命令 |
| image(ax, ···) | 在 ax 坐标区创建图像 |
| handle = image(···) | 返回生成图像对象的句柄 |
xxxxxxxxxx121figure2ax(1) = subplot(1, 2, 1);3rgb = imread('cozy_house.JPG');4image(rgb);5title('RGB image')6ax(2) = subplot(1, 2, 2);7im = mean(rgb, 3); %求矩阵第三个维度的均值8image(im);9title('Intensity Heat Map')10colormap(hot(256)) %将包含256种颜色的 hot 色图设为当前颜色图11linkaxes(ax, 'xy') %同步两个子图坐标区的 x 轴和 y 轴范围12axis(ax, 'image') %使用相同数据单位长度,将坐标区框紧密围绕图像可以自动调整至于范围
| 命令格式 | 说明 |
|---|---|
| imagesc(C) | 将矩阵 C 中的值以图像形式显示出来 |
| imagesc(x, y, C) | 指定图像位置,其中 x、y 定义了 x、y轴范围 |
| imagesc(···, Name, Value) | 指定图像属性 |
| imagesc(···, clims) | 二维向量 clims 限制了 C 中元素的取值范围 |
| imagesc(ax, ···) | 在 ax 坐标区床架泥土香 |
| h = imagesc(···) | 返回生成图像对象的句柄 |
| 命令格式 | 说明 |
|---|---|
| imshow(I) | 显示灰度图像 I |
| imshow(I, [low, high]) | 值域为 [low, high] |
| imshow(RGB) | 显示真彩色图像 |
| imshow(BW) | 显示二进制图像 |
| imshow(X, map) | 显示索引色图像,X为图像矩阵,map 为调色板 |
| imshow(filename) | 显示 filename 文件中的图像 |
| himage = imshow(···) | 返回所生成图像对象的句柄 |
| imshow(···, Name, Value) | 根据参数与值显示图像 |
| 命令格式 | 说明 |
|---|---|
| info = imfinfo(filename) | 查询图像文件 filename 的信息 |
| info = imfinfo(filename, fmt) | 指定格式为 fmt |
e.g. 球体旋转
xxxxxxxxxx121[X, Y, Z] = sphere;2surf(X, Y, Z)3axis([-3, 3, -3, 3, -1, 1])4axis off5shading interp %利用插值颜色渲染图形6colormap(hot) %设置当前颜色图为 hot7M = moviein(20); %建立一个20列的大矩阵8for i = 1 : 20;9 view(-37.5 + 24*(i-1), 30); %改变视点10 M(:, i) = getframe; %将图形保存到 M 矩阵11end12movie(M, 3) %播放画面3次e.g. 正弦函数
xxxxxxxxxx91syms x;2y = sin(x);3fplot(x, y, [0, 2*pi], 'b');4M = moviein(60);5for i = 1 : 606 fplot(x, @(x)sin(x+i*pi/30), [0, 2*pi], 'b');7 M(:, i) = getframe;8end9movie(M, 5)
xxxxxxxxxx501[X, Y] = meshgrid(-4 : 0.1 : 4);2Z = exp(abs(X+Y))./(X+Y);3
4subplot(2, 3, 1)5surf(X, Y, Z)6title('Main View')7
8subplot(2, 3, 2)9surf(X, Y, Z)10view(20, 15);11title('3d view')12
13subplot(2, 3, 3)14colormap(hot)15hold on16stem3(X, Y, Z, 'bo');17view(20, 15)18title('Filled Map');19
20subplot(2, 3, 4)21surf(X, Y, Z)22view(20, 15)23shading interp24alpha(0.5)25colormap(summer)26title('Translucent map')27
28subplot(2, 3, 5)29surf(X, Y, Z)30view(5, 10)31shading interp32hold on33mesh(X, Y, Z)34colormap(hot)35hold off36title('Transparent map')37
38subplot(2, 3, 6)39surf(X, Y, Z)40view(20, 15)41ii = find(abs(X)>6 | abs(Y)>6);42Z(ii) = zeros(size(ii));43surf(X, Y, Z)44shading interp45colormap(copper)46light('position', [0, -15, 1]);47lighting flat48material([0.8, 0.8, 0.5, 10, 0.5])49title('Tailored map')50
xxxxxxxxxx301x = linspace(1, 100, 100);2y = x;3f = x.*y;4
5X1 = linspace(min(x),max(x),100);6Y1 = linspace(min(y),max(y),100);7
8[X,Y,F] = griddata(x,y,f,X1',Y1,'v4');9% 插值方法: linear, nearset, natural, cubic, v410% 其中 v4 效果最好,cubic 与之相近,但效率高很多11
12subplot(2, 2, 1)13pcolor(X,Y,F);14shading interp %色彩平滑15% colormap(Small_Rainbow) %使用自定义的配色方案16colorbar off17title('pcolor')18
19subplot(2, 2, 2)20[~,s] = contourf(X,Y,F,100);21s.LineColor = 'none';22shading interp %色彩平滑23title('contourf none')24
25subplot(2, 2, 3)26[~,s] = contourf(X,Y,F,100);27s.LineColor = 'k';28shading interp29title('contourf black')30% pcolor 也许比 contourf 更优xxxxxxxxxx191% 绘制点云图2data = load('data1.txt');3x = data(:, 1)';4y = data(:, 2)';5f = data(:, 3)';6 7% 生成坐标轴,插值计算8X1 = linspace(min(x),max(x),100);9Y1 = linspace(min(y),max(y),100);10[X,Y,F] = griddata(x,y,f,X1',Y1,'cubic');11 12% 生成仿彩色图13pcolor(X,Y,F);14shading flat15
16% 调整色轴刻度(重要!)17colorbar18caxis([164, 165.6])19
xxxxxxxxxx591% Draw point cloud images2num = 3;3col = 4;4for i = 1:num5 figure6
7 % 加载文件数据8 filename = num2str(i) + ".txt";9 data = load(filename);10 x = data(:, 2)';11 y = data(:, 1)';12 z = data(:, 3)';13
14 % plot315 subplot(2, 2, 1)16 % subplot(num, col, col*num-3)17 plot3(x, y, z)18 grid on19 % axis equal20 title(num2str(i) + "-plot3")21
22 % patch23 subplot(2, 2, 2)24 % subplot(num, col, col*num-2)25 patch(x, y, z, z, 'edgecolor', 'flat', 'facecolor', 'none')26 view(3)27 grid on28 % axis equal29 title(num2str(i) + "-patch")30
31% % meshc32% subplot(2, 2, 2)33% meshc([x', x'], [y', y'], [z', z'], [z', z'])34
35 % 绘制三维点云图36 subplot(2, 2, 3)37 % subplot(num, col, col*num-1)38 scatter3(x, y, z, 1, z, 'filled')39 grid on40 % axis equal41 title(num2str(i) + "-scatter3")42
43 % 生成坐标轴,插值计算44 X1 = linspace(min(x), max(x), 335);45 Y1 = linspace(min(y), max(y), 2618);46 [X, Y, Z] = griddata(x, y, z, X1', Y1, 'cubic');47 48 % 生成仿彩色图(深度图)49 subplot(2, 2, 4)50 % subplot(num, col, col*num)51 pcolor(X, Y, Z);52 shading flat53 54 % 调整色轴刻度与坐标轴55 colorbar56 caxis([min(z), max(z)])57 axis equal58 title(num2str(i) + "-pcolor")59end
又称脚本文件
输入文件名执行其中命令
输入 edit 进入 M 文件编辑器
xxxxxxxxxx31function y = filename(x)2%Annotation3y = x.^2help 命令可以显示 M 文件第一个连续的注释块
look for 命令只显示第一行注释
inmem 命令查看当前内存中有哪些函数文件
xxxxxxxxxx41disp(['A', blanks(4), 'B']);23s = struct('Name', name, 'Score', score');4disp([s.Name, num2str(s.score)])
xxxxxxxxxx11fprintf("%f", x);
xxxxxxxxxx31for variable = expression;2 statement;3endxxxxxxxxxx31while expression;2 statement;3endxxxxxxxxxx71if expr_1;2 statement_1;3elseif expr_2;4 statement_2;5else6 statement_3;7endxxxxxxxxxx91switch expr;2case c_13 statement_1;4···5case c_n6 statement_n;7otherwise8 statement_o;9endxxxxxxxxxx61try2 statement_1;3catch4 statement_25end6%错误信息被捕获后存放在 lasterr 变量中
| 调用格式 | 说明 |
|---|---|
| pause | 按下任意键后继续执行 |
| pause(n) | 暂停 n 秒 |
| pause(state) | 启用、禁用或显示当前暂停设置,如 'on' 或 'off' |
| oldState = pause(state) | 返回当前暂停设置 |
| 调用格式 | 说明 |
|---|---|
| echo on / off | 显示 / 不显示 M 文件执行过程 |
| echo | 切换显示模式 |
| echo FileName on / off | 对 FileName.m 文件设置 |
| echo FileName | 同上 |
| echo on / off all | 显示 / 关闭 所有函数文件执行过程 |
| 调用格式 | 说明 |
|---|---|
| warning('message') | 显示警告信息 'message' |
| warning('message', a1, a2, ···) | 格式化字符串,包含转义字符 |
| warning(msgID, ···) | 将警告标识符附加值警告消息 |
| warning(state) | 启用、禁用或显示所有警告消息 |
| warning(state, msgID) | 处理注定警告的状态 |
| warnStruct = warning | 返回启用或禁用的信息 |
| warning(warnStruct) | 设置当前警告设置 |
| warning(state, mode) | 是否显示堆栈跟踪或有关警告的其它信息 |
| warnStruct = warning(state, mode) | 返回包含 mode 的 identifier 字符串和 state 字段 |
| 调用格式 | 说明 |
|---|---|
| error('message') | 终止程序并显示 'message' |
| error('message', a1, a2) | 格式字符串,包含转义字符 |
| error(msgID, ···) | 包含错误标识符 |
| error(errorStruct) | 使用标量结构体的字段抛出错误 |
| error(correction, ···) | 为异常提供建议修复 |
| 调用格式 | 说明 |
|---|---|
| s = input('message') | 若无输入,则返回空矩阵 |
| s = input('message', 's') | 将输入信息以 字符串 的形式赋给 s |
| 命令 | 说明 |
|---|---|
| keyboard | 使文件停止执行并将控制权交给键盘 |
| dbcont | 返回原命令行窗口 |
k = menu('mtitle', 'opt1', 'opt2',...)
产生一个菜单供用户选择
返回值为选项的编号
按 F12 键设置断点
在编辑器菜单上选择
dbstop 命令
| 调用格式 | 说明 |
|---|---|
| dbstop in mfile | 在 mfile.m 第一个可执行代码位置设置断点 |
| dbstop in mfile at LineNo | 在第 LineNo 行设置断点 |
| dbstop in file if expression | 如果表达式为真,则设置断点 |
| dbstop if condition | 在满足指定的 condition (如 error 或 naninf) 处暂停执行 |
| dbstop(b) | 恢复之前保存到 b 的断点 |
| 调用格式 | 说明 |
|---|---|
| dbclear all | 清除所有 M 文件所有断点 |
| dbclear in mfile | 清除 mfile.m 的第一个断点 |
| dbclear in mfile at LineNo | 清除第 LineNo 行的断点 |
| dbclear if condition | 如 error、naninf、infna、warning |
| 调用格式 | 说明 |
|---|---|
| dbstatus | 列出包括错误、警告、naninf 在内的所有断点 |
| dbstatus mfile | 列出 mfile.m 中的所有断点 |
| dbstatus -completenames | 为每个断点显示所在函数或文件的 完全限定名 |
| dbstatus file -completenames | 在指定文件中显示完全限定名 |
| b = dbstatus(···) | 以 |
| 调用格式 | 说明 |
|---|---|
| dbstep | 执行断点的下一行 |
| dbstep N | 执行断点的后 N 行 |
| dbstep in | 进入调用的 M 文件。若没有调用,则与destep相同 |
| dbstep out | 运行当前函数的其余代码,并在退出函数后立即暂停 |
dbcont 执行所有行程序,直到遇到断点或到达文件尾
| 调用格式 | 说明 |
|---|---|
| dbstack | 显示断点处的调用函数名及行号 |
| dbstack(n) | 在显示中省略前 n 个堆栈帧 |
| dbstack(···, '-competenames') | 显示完全限定名 |
| ST = dbstack(···) | 用 |
| [ST, I] = dbstack(···) | 用 I 返回当前的工作空间索引 |
进入调试模式:按 F5
退出调试模式:dbquit
调试时可以访问函数的局部变量
| 函数类型 | 说明 |
|---|---|
| functions(fun_handle) | 显示函数句柄的信息 |
| simple | 未加载的 MATLAB 内部函数、M 文件,或至在执行过程才能用 type() 显示内容的函数 |
| subfunction | MATLAB 子函数 |
| private | MATLBA 局部函数 |
| constructor | MALAB 类的创建函数 |
| overloaded | 加载内部函数或 M 文件 |
xxxxxxxxxx11[y1,y2,···,yn] = feval(fhandle, x1,···xn)e.g.
xxxxxxxxxx111%test.m2function f = test(x, y)3f = x - y;4
5%command6fhandle = @test7%调用8test(3, 2)9feval(fhandle, 3, 2)10feval(@test, 3, 2)11feval('test', 3, 2)
xxxxxxxxxx121e = eig(A)2[V,D] = eig(A) % V: 特征向量; D: 对角矩阵3[V,D,W] = eig(A)% W: 满矩阵4
5e = eig(A,B) % 广义特征向量6[V,D] = eig(A,B)7[V,D,W] = eig(A,B)8
9[___] = eig(A,balanceOption)10[___] = eig(A,B,algorithm)11
12[___] = eig(___,eigvalOption) % 'vector' 或 'matrix'xxxxxxxxxx41[T,B] = balance(A)2[S,P,B] = balance(A)3B = balance(A)4B = balance(A,'noperm')xxxxxxxxxx21c = poly(A) % 返回 A 的特征多项式系数组成的行向量2c = poly(r) % 返回以 r 中元素为根的特征多项式系数组成的行向量
xxxxxxxxxx51e = eig(A,B) % 广义特征向量2[V,D] = eig(A,B)3[V,D,W] = eig(A,B)4
5[___] = eig(A,B,algorithm)
xxxxxxxxxx91d = eigs(A)2d = eigs(A,k)3d = eigs(A,k,sigma)4d = eigs(A,k,sigma,Name,Value)5d = eigs(A,k,sigma,opts)6d = eigs(A,B,___)7d = eigs(Afun,n,___)8[V,D] = eigs(___)9[V,D,flag] = eigs(___)| 取值 | 说明 |
|---|---|
| 'lm' | 按模最大的 |
| 'sm' | 按模最小的 |
| 'a' | 对实对称问题求 |
| 'sa' | 对实对称问题求 |
| 'lr' | 非实对称和复数问题, 最大实部 |
| 'sr' | 非实对称和复数问题, 最小实部 |
| 'li' | 非实对称和复数问题, 最大虚部 |
| 'lr' | 非实对称和复数问题, 最小虚部 |
| 调用格式 | 说明 |
|---|---|
| [output1, ···, outputN] = eval(expression) | 如果需要在表达式中包含数值, 则使用 int2str, num2str 或 sprintf |
| subs(s) | 数值转为符号 |
| sub(s, new) | 输入 new 变量 |
| sub(s, old, new) | 将 old 变量替换为 new 变量 |
设置精度
| 调用格式 | 说明 |
|---|---|
| digits(D) | 设置有效数字为 D |
| d1 = digits | 返回 vpa 当前使用的精度 |
| d1 = digits(d) | 设置新的精度 d, 并返回旧精度 |
| vpa(x) | 利用可变精度浮点运算 (vpa) 计算符号表达式 x 每个元素, 计算结果至少 32 个有效数字 |
| vpa(x, d) | 设置有效数字为 d |
xxxxxxxxxx21B = sparse(eye(3));2C = vpa(B); % 稀疏矩阵的数值解
xxxxxxxxxx21sym('x');2sym('a', [n1,..., nM]);
xxxxxxxxxx41syms x2a - @(x)(sin(x) + cos(x));3f = sym(a); % 转换为符号矩阵 f4f = cos(x) + sin(x); % 重新赋值
sum
xxxxxxxxxx51S = sum(A, 'all');2S = sum(A, outtype);3% 输出类型有三种: 'default', 'double', 'native'.4S = sum(A, nanflag);5% 'includenan', 'omitnan'.nansum
cumsum: 求此元素位置之前的元素和
sumtrapz: 求梯形累计和
prod
cumprod: 累计积函数
factorial: 阶乘函数
gamma: 伽马函数
| 命令 | 说明 |
|---|---|
limit(f, x, a) 或 limit(f, a) | |
limit(f) | |
limit(f, x, a, 'right') | 右极限. |
xxxxxxxxxx31syms s2f = sin(x) / x;3limit(f)| 命令 | 说明 |
|---|---|
Y = diff(X) | 求相邻元素间的差分. |
Y = diff(X, n) | |
Y = diff(X, n, dim) | 沿 dim 维度. |
xxxxxxxxxx41syms x y2f = x^y;3fx = diff(f, x);4fxy = diff(fx, y);
| 命令 | 说明 |
|---|---|
F = symsum(f, k) | 返回级数 |
F = symsum(f, k, a, b) | 从 |
xxxxxxxxxx31syms n2s = 1 / n;3v = symsum(s, n, 1, inf);
xxxxxxxxxx121t = -4*pi : pi/10 : 4*pi;2y = sin(t) ./ t;3tt = t + (t==0)*eps;4yy = sin(tt) ./ tt;5
6subplot(1, 2, 1);7plot(t, y), axis([-9, 9, -0.5, 1.2]);8xlabel('t'), ylabel('y'), title('普通图形');9
10subplot(1, 2, 2);11plot(tt, yy), axis([-9, 9, -0.5, 1.2]);12xlabel('tt'), ylabel('yy'), title('修改图形');
| 命令 | 说明 |
|---|---|
int(f, a, b) | 定积分 |
int(f, x, a, b) |
xxxxxxxxxx31sysm x2v = int(sin(x)/x, 0, 1);3vpa(v);
int(f)
int(f, x)
q = integral2(fun, xmin, xmax, ymin, ymax);
求交点 A = fzero('2*x-0.5*x', 0).
taylor(f, m, a)
当 taylor(f, a), 否则会被误认为 taylor(f, m) 即 4 阶麦克劳林展开.
函数
xxxxxxxxxx31S = dsolve(eqn);2S = dsolve(eqn, cond); % 边界条件3Y = dsolve(eqns); % 微分方程组e.g. 微分方程组
xxxxxxxxxx41syms x(t) y(t)2eqns = [diff(x,t,1)==y, diff(y,t)==-x];3S = dsolve(eqns);4disp([S.x, S.y]);e.g. 求特解, 并绘图
xxxxxxxxxx131syms y(x)2eqn = x*diff(y,x,2) - 5*diff(y,x) + x^3 == 0;3y = dsolve(eqn, 'y(1)=0, y(5)=0', 'x');4
5xn = -1:6;6yn = subs(y, 'x', xn);7fplot(y, [-1, 6]);8axis([-1 6 -10 15]);9hold on10plot([1, 5], [0,0], '.r', 'MarkerSize', 20);11text(1, 1, 'y(1)=0');12text(4, 1, 'y(5)=0');13hold off
xxxxxxxxxx161function [x, y] = euler(f, x0, y0, xf, h)2% Euler function: y_{n+1} = y_n + h f(x_n, y_n).3% f is the derivative of y.4% Modification:5% y_p = y_n + h f(x_n, y_n),6% y_c = y_n + h f(x_{n+1}, y_n),7% y_{n+1} = (y_p + y_c) / 2.8n = fix((xf-x0)/h);9y(1) = y0;10x(1) = x0;11for i = 1:n12 x(i+1) = x0 + i*h;13 yp = y(i) + h*feval(f, x(i), y(i));14 yc = y(i) + h*feval(f, x(i+1), yp);15 y(i+1) = (yp+yc) / 2;16end
| 示例 | 说明 |
|---|---|
x = pi | 使用等号 (=) 创建变量。 左侧 (x) 是变量的名称,其值为右侧 (pi) 的值。 |
y = sin(-5) | 您可以使用括号提供函数的输入。 |
| 函数 | 示例 | 说明 |
|---|---|---|
save | save data.mat | 将当前工作区保存到 MAT 文件中。 |
load | load data.mat | 将 MAT 文件中的变量加载到工作区。 |
clear | clear | 清除工作区中的所有变量。 |
clc | clc | 清除命令行窗口中的所有文本。 |
format | format long | 更改数值输出的显示方式。 |
| 示例 | 说明 |
|---|---|
4 | 标量 |
[3 5] | 行向量 |
[1;3] | 列向量 |
[3 4 5;6 7 8] | 矩阵 |
| 示例 | 说明 |
|---|---|
1:4 | 使用冒号 (:) 运算符,创建一个从 1 到 4,间距为 1 的向量。 |
1:0.5:4 | 创建一个从 1 到 4,间距为 0.5 的向量。 |
linspace(1,10,5) | 创建一个包含 5 个元素的向量。这些值从 1 到 10 均匀间隔。 |
| 示例 | 说明 |
|---|---|
rand(2) | 创建一个 2 行 2 列的方阵。 |
zeros(2,3) | 创建一个 2 行 3 列的矩形矩阵。 |
| 示例 | 说明 |
|---|---|
A(end,2) | 访问最后一行的第二列中的元素。 |
A(2,:) | 访问第二行所有元素。 |
A(1:3,:) | 访问前三行的所有列。 |
A(2) = 11 | 将数组中第二个元素的值更改为 11。 |
| 示例 | 说明 |
|---|---|
[xrow,xcol] = size(x) | 将 x 中的行数和列数保存为两个不同变量。 |
[xMax,idx] = max(x) | 计算 x 的最大值及其对应的索引值。 |
| 示例 | 说明 |
|---|---|
doc randi | 打开 randi 函数的文档页。 |
| 示例 | 说明 |
|---|---|
plot(x,y,"ro-","LineWidth",5) | 绘制一条红色 (r) 虚线 (--) 并使用圆圈 (o) 标记,线宽很大。 |
hold on | 在现有绘图中新增一行。 |
hold off | 为下一个绘图线条创建一个新坐标区。 |
title("My Title") | 为绘图添加标签。 |
| 示例 | 说明 |
|---|---|
data.HeightYards | 从表 data 中提取变量 HeightYards。 |
data.HeightMeters = data.HeightYards*0.9144 | 从现有数据中派生一个表变量。 |
| 示例 | 说明 |
|---|---|
[5 10 15] > 12 | 将向量与值 12 进行比较。 |
v1(v1 > 6) | 提取 v1 中大于 6 的所有元素。 |
x(x==999) = 1 | 用值 1 替换 x 中等于 999 的所有值。 |
| 示例 | 说明 |
|---|---|
if x > 0.5 y = 3 else y = 4 end | 如果 x 大于 0.5,则将 y 的值设置为 3。 否则,将 y 的值设置为 4。 |
for c = 1:3 disp(c) end | 循环计数器 (c) 遍历 值 1:3(1、2 和 3)。 循环体显示 c 的每个值。 |
| 命令 | 说明 | 字节 |
|---|---|---|
double | 双精度数组 | 8 |
single | 单精度数组 | 4 |
int8 | 8 位有符号整数数组 | 1 |
int16 | 16 位有符号整数数组 | 2 |
int32 | 32 位有符号整数数组 | 4 |
int64 | 64 位有符号整数数组 | 8 |
uint8 | 8 位无符号整数数组 | 1 |
uint16 | 16 位无符号整数数组 | 2 |
uint32 | 32 位无符号整数数组 | 4 |
uint64 | 64 位无符号整数数组 | 8 |
| 命令 | 说明 |
|---|---|
isinteger | 确定输入是否为整数数组 |
isfloat | 确定输入是否为浮点数组 |
isnumeric | 确定输入是否为数值数组 |
isreal | 确定数组是否使用复数存储 |
isfinite | 确定哪些数组元素为有限 |
isinf | 确定哪些数组元素为无限值 |
isnan | 确定哪些数组元素为 NaN |
| 命令 | 说明 |
|---|---|
eps | 浮点相对精度 |
flintmax | 浮点格式的最大连续整数 |
Inf | 创建所有值均为 Inf 的数组 |
intmax | 特定整数类型的最大值 |
intmin | 指定整数类型的最小值 |
NaN | 创建所有值均为 NaN 的数组 |
realmax | 最大的正浮点数 |
realmin | 最小标准浮点数 |
| 调用格式 | 说明 |
|---|---|
| fgel(fileID) | 读取一行,不包括换行符 |
| fgets | 读取一行,包括换行符 |
| fread(fileID, sizeA) | 读取 二进制文件 数据 |
| fileread | 以文本格式读取文件内容 |
| readlines(filename) | 以字符串数组形式读取文件行 |
| A = fscanf(fileID, formatSpec, sizeA) | 读取文本文件中的数据 |
| status = feof(fileID) | 检测文件末尾 |
注:对于文本文件,fscanf 格式化读取比较方便
读取一行,不包括换行符
xxxxxxxxxx71fid = fopen(filename);2tline = fgetl(fid);3
4if feof(fid)5 frewind(fid);6end7fclose(fid);读取一行,包括换行符
xxxxxxxxxx51tline = fgets(fileID) % 读取指定文件中的下一行内容,并包含换行符。2
3tline = fgets(fileID,nchar) % 返回下一行中的最多 nchar 个字符。4
5[tline,ltout] = fgets(___) % 还在 ltout 中返回行终止符(如果有)。读取二进制文件数据
xxxxxxxxxx191A = fread(fileID)2% 将打开的二进制文件中的数据读取到列向量 A 中,并将文件指针定位在文件结尾标记处。该二进制文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。读取文件后,请调用 fclose(fileID) 来关闭文件。3
4A = fread(fileID,sizeA)5% 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fread 按列顺序填充 A。6
7A = fread(fileID,precision)8% 根据 precision 描述的格式和大小解释文件中的值。9
10A = fread(fileID,sizeA,precision)11% 将文件数据读取到维度为 sizeA 的数组 A 中,并将文件指针定位到最后读取的值之后。fread 按列顺序填充 A。根据 precision 描述的格式和大小解释文件中的值。12
13A = fread(___,skip)14% 在读取文件中的每个值之后将跳过 skip 指定的字节或位数。15
16A = fread(___,machinefmt)17% 另外指定在文件中读取字节或位时的顺序。18
19[A,count] = fread(___)以文本格式读取文件内容
xxxxxxxxxx31text = fileread(filename)2
3text = fileread(filename,Encoding=encoding)以字符串数组形式读取文件行
xxxxxxxxxx51S = readlines(filename)2% 通过读取一个包含 N 行的文件创建一个 N×1 字符串数组。3
4S = readlines(filename,Name,Value)5% 基于文件创建一个字符串数组,并通过一个或多个名称-值对组参数指定其他选项。例如,'EmptyLineRule','skip' 跳过空行。读取文本文件中的数据
xxxxxxxxxx31A = fscanf(fileID,formatSpec)2A = fscanf(fileID,formatSpec,sizeA)3[A,count] = fscanf(___)
写入文本文件
xxxxxxxxxx31fprintf(fileID,formatSpec,A1,...,An)2fprintf(formatSpec,A1,...,An)3nbytes = fprintf(___)写入二进制文件
xxxxxxxxxx51fwrite(fileID,A)2fwrite(fileID,A,precision)3fwrite(fileID,A,precision,skip)4fwrite(fileID,A,precision,skip,machinefmt)5count = fwrite(___)
xxxxxxxxxx71fileID = fopen(filename)2fileID = fopen(filename,permission)3fileID = fopen(filename,permission,machinefmt,encodingIn)4[fileID,errmsg] = fopen(___)5fIDs = fopen('all')6filename = fopen(fileID)7[filename,permission,machinefmt,encodingOut] = fopen(fileID)xxxxxxxxxx31fclose(fileID)2fclose('all')3status = fclose(___)xxxxxxxxxx11status = feof(fileID)xxxxxxxxxx31message = ferror(fileID)2[message,errnum] = ferror(fileID)3[message,errnum] = ferror(fileID,'clear')xxxxxxxxxx21fseek(fileID, offset, origin)2status = fseek(___)xxxxxxxxxx11position = ftell(fileID)xxxxxxxxxx11frewind(fileID)
均匀分布的随机数字
xxxxxxxxxx71X = rand2X = rand(n)3X = rand(sz1,...,szN)4X = rand(sz)5X = rand(___,typename)6X = rand(___,"like",p)7X = rand(s,___)正态分布的随机数字
xxxxxxxxxx71X = randn2X = randn(n)3X = randn(sz1,...,szN)4X = randn(sz)5X = randn(___,typename)6X = randn(___,"like",p)7X = randn(s,___)均匀分布的伪随机整数
xxxxxxxxxx81X = randi(imax)2X = randi(imax,n)3X = randi(imax,sz1,...,szN)4X = randi(imax,sz)5X = randi(___,typename)6X = randi(___,"like",p)7X = randi([imin,imax],___)8X = randi(s,___)
四舍五入,取最近的整数或小数
xxxxxxxxxx61Y = round(X)2Y = round(X,N) % N digits3Y = round(X,N,type)4Y = round(___,TieBreaker=direction)5Y = round(t)6Y = round(t,unit)进一法(向
xxxxxxxxxx31Y = ceil(X)2Y = ceil(t)3Y = ceil(t,unit)去尾法(向
xxxxxxxxxx31Y = floor(X)2Y = floor(t)3Y = floor(t,unit)向
xxxxxxxxxx11Y = fix(X)
xxxxxxxxxx71size(x) % 返回二维向量2numel(x) % 返回元素个数3length(x) % 向量长度4abs(fft(y)) % 离散傅里叶变换的幅值5pause % Press any key to continue.6pause(0.2) % pause 0.2 second7mode(X) % 取众数