第 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
加载变量
xxxxxxxxxx
71load(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) | 设置线性、标记符号、颜色 |
转换成直角坐标系
xxxxxxxxxx
31[x, y] = pol2cart(t, r);
2figure
3plot(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 坐标区 |
xxxxxxxxxx
101x = -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); %数值梯度,每个方向上的点间距为2
6contour(X, Y, Z) %等高线图
7hold on
8quiver(X, Y, U, V) %矢量图
9hold off
10axis 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 指定的坐标区 |
xxxxxxxxxx
111t = -4 : 0.1 : 4;
2[X, Y] = meshgrid(t);
3Z = peaks(X, Y); %山峰函数
4subplot(1, 2, 1)
5mesh(X, Y, Z);
6hidden on
7title('Grid unshown')
8subplot(1, 2, 2)
9mesh(X, Y, Z)
10hidden off
11title('Grid shown')
画网格图与等高线图
画网格图与零平面的网格图
xxxxxxxxxx
121x = -5 : 0.1 : 5;
2[X, Y] = meshgrid(x);
3Z = cos(sqrt(X.^2 + Y.^2));
4tiledlayout(2, 2)
5nexttile
6plot3(X, Y, Z), title('plot3'); %三维线图
7nexttile
8mesh(X, Y, Z), title('mesh'); %三维曲面网格图
9nexttile
10meshc(X, Y, Z), title('meshc'); %三维曲面网格图,并显示等高线
11nexttile
12meshz(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 对象 |
xxxxxxxxxx
41syms x y
2f = sin(x)*exp(y) - cos(y)*exp(x) + exp(x) + exp(y);
3fmesh(f, [-pi, pi])
4title('fmesh')
用法同mesh
含基本等高线
有亮度的曲面图
xxxxxxxxxx
71[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);
xxxxxxxxxx
51syms 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 flat
11title('shading flat')
12
13subplot(2, 2, 3)
14surf(X, Y, Z)
15shading faceted
16title('default shading faceted')
17
18subplot(2, 2, 4)
19surf(X, Y, Z)
20shading interp
21title('shading interp')
xxxxxxxxxx
41pcolor(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
xxxxxxxxxx
101[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 坐标区 |
xxxxxxxxxx
201[x, y, z] = sphere;
2subplot(1, 2, 1);
3surf(x, y, z);
4shading interp
5%在指定坐标创建向无限远处照射的光源
6light('position', [2, -2, 2], 'style', 'local')
7lighting phong
8axis equal
9
10subplot(1, 2, 2)
11surf(x, y, z, -z);
12shading flat
13light
14%在每个面上产生均匀分布的光照
15lighting flat
16%创建黄色光源
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(···) | 返回生成图像对象的句柄 |
xxxxxxxxxx
121figure
2ax(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. 球体旋转
xxxxxxxxxx
121[X, Y, Z] = sphere;
2surf(X, Y, Z)
3axis([-3, 3, -3, 3, -1, 1])
4axis off
5shading interp %利用插值颜色渲染图形
6colormap(hot) %设置当前颜色图为 hot
7M = moviein(20); %建立一个20列的大矩阵
8for i = 1 : 20;
9 view(-37.5 + 24*(i-1), 30); %改变视点
10 M(:, i) = getframe; %将图形保存到 M 矩阵
11end
12movie(M, 3) %播放画面3次
e.g. 正弦函数
xxxxxxxxxx
91syms x;
2y = sin(x);
3fplot(x, y, [0, 2*pi], 'b');
4M = moviein(60);
5for i = 1 : 60
6 fplot(x, @(x)sin(x+i*pi/30), [0, 2*pi], 'b');
7 M(:, i) = getframe;
8end
9movie(M, 5)
xxxxxxxxxx
501[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 on
16stem3(X, Y, Z, 'bo');
17view(20, 15)
18title('Filled Map');
19
20subplot(2, 3, 4)
21surf(X, Y, Z)
22view(20, 15)
23shading interp
24alpha(0.5)
25colormap(summer)
26title('Translucent map')
27
28subplot(2, 3, 5)
29surf(X, Y, Z)
30view(5, 10)
31shading interp
32hold on
33mesh(X, Y, Z)
34colormap(hot)
35hold off
36title('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 interp
45colormap(copper)
46light('position', [0, -15, 1]);
47lighting flat
48material([0.8, 0.8, 0.5, 10, 0.5])
49title('Tailored map')
50
xxxxxxxxxx
301x = 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, v4
10% 其中 v4 效果最好,cubic 与之相近,但效率高很多
11
12subplot(2, 2, 1)
13pcolor(X,Y,F);
14shading interp %色彩平滑
15% colormap(Small_Rainbow) %使用自定义的配色方案
16colorbar off
17title('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 interp
29title('contourf black')
30% pcolor 也许比 contourf 更优
xxxxxxxxxx
191% 绘制点云图
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 flat
15
16% 调整色轴刻度(重要!)
17colorbar
18caxis([164, 165.6])
19
xxxxxxxxxx
591% Draw point cloud images
2num = 3;
3col = 4;
4for i = 1:num
5 figure
6
7 % 加载文件数据
8 filename = num2str(i) + ".txt";
9 data = load(filename);
10 x = data(:, 2)';
11 y = data(:, 1)';
12 z = data(:, 3)';
13
14 % plot3
15 subplot(2, 2, 1)
16 % subplot(num, col, col*num-3)
17 plot3(x, y, z)
18 grid on
19 % axis equal
20 title(num2str(i) + "-plot3")
21
22 % patch
23 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 on
28 % axis equal
29 title(num2str(i) + "-patch")
30
31% % meshc
32% 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 on
40 % axis equal
41 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 flat
53
54 % 调整色轴刻度与坐标轴
55 colorbar
56 caxis([min(z), max(z)])
57 axis equal
58 title(num2str(i) + "-pcolor")
59end
又称脚本文件
输入文件名执行其中命令
输入 edit
进入 M 文件编辑器
xxxxxxxxxx
31function y = filename(x)
2%Annotation
3y = x.^2
help 命令可以显示 M 文件第一个连续的注释块
look for 命令只显示第一行注释
inmem 命令查看当前内存中有哪些函数文件
xxxxxxxxxx
41disp(['A', blanks(4), 'B']);
2
3s = struct('Name', name, 'Score', score');
4disp([s.Name, num2str(s.score)])
xxxxxxxxxx
11fprintf("%f", x);
xxxxxxxxxx
31for variable = expression;
2 statement;
3end
xxxxxxxxxx
31while expression;
2 statement;
3end
xxxxxxxxxx
71if expr_1;
2 statement_1;
3elseif expr_2;
4 statement_2;
5else
6 statement_3;
7end
xxxxxxxxxx
91switch expr;
2case c_1
3 statement_1;
4···
5case c_n
6 statement_n;
7otherwise
8 statement_o;
9end
xxxxxxxxxx
61try
2 statement_1;
3catch
4 statement_2
5end
6%错误信息被捕获后存放在 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 文件 |
xxxxxxxxxx
11[y1,y2,···,yn] = feval(fhandle, x1,···xn)
e.g.
xxxxxxxxxx
111%test.m
2function f = test(x, y)
3f = x - y;
4
5%command
6fhandle = @test
7%调用
8test(3, 2)
9feval(fhandle, 3, 2)
10feval(@test, 3, 2)
11feval('test', 3, 2)
xxxxxxxxxx
121e = 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'
xxxxxxxxxx
41[T,B] = balance(A)
2[S,P,B] = balance(A)
3B = balance(A)
4B = balance(A,'noperm')
xxxxxxxxxx
21c = poly(A) % 返回 A 的特征多项式系数组成的行向量
2c = poly(r) % 返回以 r 中元素为根的特征多项式系数组成的行向量
xxxxxxxxxx
51e = eig(A,B) % 广义特征向量
2[V,D] = eig(A,B)
3[V,D,W] = eig(A,B)
4
5[___] = eig(A,B,algorithm)
xxxxxxxxxx
91d = 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 |
xxxxxxxxxx
21B = sparse(eye(3));
2C = vpa(B); % 稀疏矩阵的数值解
xxxxxxxxxx
21sym('x');
2sym('a', [n1,..., nM]);
xxxxxxxxxx
41syms x
2a - @(x)(sin(x) + cos(x));
3f = sym(a); % 转换为符号矩阵 f
4f = cos(x) + sin(x); % 重新赋值
sum
xxxxxxxxxx
51S = 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') | 右极限. |
xxxxxxxxxx
31syms s
2f = sin(x) / x;
3limit(f)
命令 | 说明 |
---|---|
Y = diff(X) | 求相邻元素间的差分. |
Y = diff(X, n) | |
Y = diff(X, n, dim) | 沿 dim 维度. |
xxxxxxxxxx
41syms x y
2f = x^y;
3fx = diff(f, x);
4fxy = diff(fx, y);
命令 | 说明 |
---|---|
F = symsum(f, k) | 返回级数 |
F = symsum(f, k, a, b) | 从 |
xxxxxxxxxx
31syms n
2s = 1 / n;
3v = symsum(s, n, 1, inf);
xxxxxxxxxx
121t = -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) |
xxxxxxxxxx
31sysm x
2v = 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 阶麦克劳林展开.
函数
xxxxxxxxxx
31S = dsolve(eqn);
2S = dsolve(eqn, cond); % 边界条件
3Y = dsolve(eqns); % 微分方程组
e.g. 微分方程组
xxxxxxxxxx
41syms x(t) y(t)
2eqns = [diff(x,t,1)==y, diff(y,t)==-x];
3S = dsolve(eqns);
4disp([S.x, S.y]);
e.g. 求特解, 并绘图
xxxxxxxxxx
131syms 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 on
10plot([1, 5], [0,0], '.r', 'MarkerSize', 20);
11text(1, 1, 'y(1)=0');
12text(4, 1, 'y(5)=0');
13hold off
xxxxxxxxxx
161function [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:n
12 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 格式化读取比较方便
读取一行,不包括换行符
xxxxxxxxxx
71fid = fopen(filename);
2tline = fgetl(fid);
3
4if feof(fid)
5 frewind(fid);
6end
7fclose(fid);
读取一行,包括换行符
xxxxxxxxxx
51tline = fgets(fileID) % 读取指定文件中的下一行内容,并包含换行符。
2
3tline = fgets(fileID,nchar) % 返回下一行中的最多 nchar 个字符。
4
5[tline,ltout] = fgets(___) % 还在 ltout 中返回行终止符(如果有)。
读取二进制文件数据
xxxxxxxxxx
191A = 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(___)
以文本格式读取文件内容
xxxxxxxxxx
31text = fileread(filename)
2
3text = fileread(filename,Encoding=encoding)
以字符串数组形式读取文件行
xxxxxxxxxx
51S = readlines(filename)
2% 通过读取一个包含 N 行的文件创建一个 N×1 字符串数组。
3
4S = readlines(filename,Name,Value)
5% 基于文件创建一个字符串数组,并通过一个或多个名称-值对组参数指定其他选项。例如,'EmptyLineRule','skip' 跳过空行。
读取文本文件中的数据
xxxxxxxxxx
31A = fscanf(fileID,formatSpec)
2A = fscanf(fileID,formatSpec,sizeA)
3[A,count] = fscanf(___)
写入文本文件
xxxxxxxxxx
31fprintf(fileID,formatSpec,A1,...,An)
2fprintf(formatSpec,A1,...,An)
3nbytes = fprintf(___)
写入二进制文件
xxxxxxxxxx
51fwrite(fileID,A)
2fwrite(fileID,A,precision)
3fwrite(fileID,A,precision,skip)
4fwrite(fileID,A,precision,skip,machinefmt)
5count = fwrite(___)
xxxxxxxxxx
71fileID = 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)
xxxxxxxxxx
31fclose(fileID)
2fclose('all')
3status = fclose(___)
xxxxxxxxxx
11status = feof(fileID)
xxxxxxxxxx
31message = ferror(fileID)
2[message,errnum] = ferror(fileID)
3[message,errnum] = ferror(fileID,'clear')
xxxxxxxxxx
21fseek(fileID, offset, origin)
2status = fseek(___)
xxxxxxxxxx
11position = ftell(fileID)
xxxxxxxxxx
11frewind(fileID)
均匀分布的随机数字
xxxxxxxxxx
71X = rand
2X = rand(n)
3X = rand(sz1,...,szN)
4X = rand(sz)
5X = rand(___,typename)
6X = rand(___,"like",p)
7X = rand(s,___)
正态分布的随机数字
xxxxxxxxxx
71X = randn
2X = randn(n)
3X = randn(sz1,...,szN)
4X = randn(sz)
5X = randn(___,typename)
6X = randn(___,"like",p)
7X = randn(s,___)
均匀分布的伪随机整数
xxxxxxxxxx
81X = 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,___)
四舍五入,取最近的整数或小数
xxxxxxxxxx
61Y = round(X)
2Y = round(X,N) % N digits
3Y = round(X,N,type)
4Y = round(___,TieBreaker=direction)
5Y = round(t)
6Y = round(t,unit)
进一法(向
xxxxxxxxxx
31Y = ceil(X)
2Y = ceil(t)
3Y = ceil(t,unit)
去尾法(向
xxxxxxxxxx
31Y = floor(X)
2Y = floor(t)
3Y = floor(t,unit)
向
xxxxxxxxxx
11Y = fix(X)
xxxxxxxxxx
71size(x) % 返回二维向量
2numel(x) % 返回元素个数
3length(x) % 向量长度
4abs(fft(y)) % 离散傅里叶变换的幅值
5pause % Press any key to continue.
6pause(0.2) % pause 0.2 second
7mode(X) % 取众数