这个快速参考备忘单提供了使用 MATLAB 科学计算语言快速入门的示例介绍
MATLAB 允许您使用单一的算术运算符或函数来处理矩阵中的所有值
a + 10
MATLAB 将执行上述语句,并返回以下结果:
ans = 3×3
11 13 15
12 14 16
17 18 20
sin(a)
MATLAB 将执行上述语句,并返回以下结果:
ans = 3×3
0.8415 0.1411 -0.9589
0.9093 -0.7568 -0.2794
0.6570 0.9894 -0.5440
要转置矩阵,请使用单引号 (')
a'
ans = 3×3
1 2 7
3 4 8
5 6 10
使用 * 运算符执行标准矩阵乘法,这将计算行与列之间的内积
p = a*inv(a)
p = 3×3
1.0000 0 0
0 1.0000 0
0 0 1.0000
串联是连接数组以便形成更大数组的过程。实际上,第一个数组是通过将其各个元素串联起来而构成的。成对的方括号 [] 即为串联运算符。
A = [a,a]
A = 3×6
1 3 5 1 3 5
2 4 6 2 4 6
7 8 10 7 8 10
使用逗号将彼此相邻的数组串联起来称为水平串联。每个数组必须具有相同的行数。同样,如果各数组具有相同的列数,则可以使用分号垂直串联。
A = [a; a]
A = 6×3
1 3 5
2 4 6
7 8 10
1 3 5
2 4 6
7 8 10
要创建每行包含四个元素的数组,请使用逗号 (,) 或空格分隔各元素
a = [1 2 3 4]
MATLAB 将执行上述语句,并返回以下结果:
a = 1×4
1 2 3 4
a = [1 3 5; 2 4 6; 7 8 10]
a = 3×3
1 3 5
2 4 6
7 8 10
z = zeros(5,1)
z = 5×1
0
0
0
0
0
复数包含实部和虚部,虚数单位是 -1 的平方根。
sqrt(-1)
ans = 0.0000 + 1.0000i
要表示复数的虚部,请使用 i 或 j。
c = [3+4i, 4+3j; -i, 10j]
c = 2×2 complex
3.0000 + 4.0000i 4.0000 + 3.0000i
0.0000 - 1.0000i 0.0000 +10.0000i
| :- | :- |
|---|---|
| ans | 最近计算的答案 |
| clc | 清空命令行窗口 |
| diary | 将命令行窗口文本记录到日志文件中 |
| format | 设置输出显示格式 |
| home | 发送光标复位 |
| iskeyword | 确定输入是否为 MATLAB 关键字 |
| more | 控制命令行窗口中的分页输出 |
| commandwindow | 选择命令行窗口 |
| commandhistory | 打开命令历史记录窗口 |
| :- | :- |
|---|---|
| DisplayFormatOptions | 命令行窗口中的输出显示格式 |
创建和合并数组
| :- | :- |
|---|---|
| zeros | 创建全零数组 |
| ones | 创建全部为 1 的数组 |
| rand | 均匀分布的随机数 |
| true | 逻辑值 1(真) |
| false | 逻辑 0(假) |
| eye | 单位矩阵 |
| diag | 创建对角矩阵或获取矩阵的对角元素 |
| blkdiag | 分块对角矩阵 |
| cat | 串联数组。 |
| horzcat | 水平串联数组 |
| vertcat | 垂直串联数组 |
| repelem | 重复数组元素副本 |
| repmat | 重复数组副本 |
创建网格
| :- | :- |
|---|---|
| linspace | 生成线性间距向量 |
| logspace | 生成对数间距向量 |
| freqspace | 频率响应的频率间距 |
| meshgrid | 二维和三维网格 |
| ndgrid | N 维空间中的矩形网格 |
确定大小、形状和排序
| :- | :- |
|---|---|
| length | 最大数组维度的长度 |
| size | 数组大小 |
| ndims | 数组维度数目 |
| numel | 数组元素的数目 |
| isscalar | 确定输入是否为标量 |
| issorted | 确定数组是否已排序 |
| issortedrows | 确定矩阵或表的行是否已排序 |
| isvector | 确定输入是否为向量 |
| ismatrix | 确定输入是否为矩阵 |
| isrow | 确定输入是否为行向量 |
| iscolumn | 确定输入是否为列向量 |
| isempty | 确定数组是否为空 |
重构和重新排列
| :- | :- |
|---|---|
| sort | 对数组元素排序 |
| sortrows | 对矩阵行或表行进行排序 |
| flip | 翻转元素顺序 |
| fliplr | 将数组从左向右翻转 |
| flipud | 将数组从上向下翻转 |
| rot90 | 将数组旋转 90 度 |
| transpose | 转置向量或矩阵 |
| ctranspose | 复共轭转置 |
| permute | 置换数组维度 |
| ipermute | 逆置换数组维度。 |
| circshift | 循环平移数组 |
| shiftdim | 移动数组维度 |
| reshape | 重构数组 |
| squeeze | 删除长度为 1 的维度 |
索引
| :- | :- |
|---|---|
| colon | 向量创建、数组下标和 for 循环迭代 |
| end | 终止代码块或指示最大数组索引 |
| ind2sub | 将线性索引转换为下标 |
| sub2ind | 将下标转换为线性索引 |
创建数值变量
| :- | :- |
|---|---|
| double | 双精度数组 |
| single | 单精度数组 |
| int8 | 8 位有符号整数数组 |
| int16 | 16 位有符号整数数组 |
| int32 | 32 位有符号整数数组 |
| int64 | 64 位有符号整数数组 |
| uint8 | 8 位无符号整数数组 |
| uint16 | 16 位无符号整数数组 |
| uint32 | 32 位无符号整数数组 |
| uint64 | 64 位无符号整数数组 |
在数值类型之间转换
| :- | :- |
|---|---|
| cast | 将变量转换为不同的数据类型 |
| typecast | 在不更改基础数据的情况下转换数据类型 |
查询类型和值
| :- | :- |
|---|---|
| allfinite | Determine if all array elements are finite |
| anynan | Determine if any array element is NaN |
| isinteger | 确定输入是否为整数数组 |
| isfloat | 确定输入是否为浮点数组 |
| isnumeric | 确定输入是否为数值数组 |
| isreal | 确定数组是否使用复数存储 |
| isfinite | 确定哪些数组元素为有限 |
| isinf | 确定哪些数组元素为无限值 |
| isnan | 确定哪些数组元素为 NaN |
数值范围
| :- | :- |
|---|---|
| eps | 浮点相对精度 |
| flintmax | 浮点格式的最大连续整数 |
| Inf | 创建所有值均为 Inf 的数组 |
| intmax | 特定整数类型的最大值 |
| intmin | 特定整数类型的最小值 |
| NaN | 创建所有值均为 NaN 的数组 |
| realmax | 最大的正浮点数 |
| realmin | 最小标准浮点数 |
| :- | :- |
|---|---|
| if, elseif, else | 条件为 true 时执行语句 |
| switch, case, otherwise | 执行多组语句中的一组 |
| for | 用来重复指定次数的 for 循环 |
| while | 条件为 true 时重复执行的 while 循环 |
| try, catch | 执行语句并捕获产生的错误 |
| break | 终止执行 for 或 while 循环 |
| return | 将控制权交还给调用脚本或函数 |
| continue | 将控制传递给 for 或 while 循环的下一迭代 |
| pause | 暂时停止执行 MATLAB |
| parfor | 并行 for 循环 |
| end | 终止代码块或指示最大数组索引 |
| :- | :- |
|---|---|
| convertCharsToStrings | 将字符数组转换为字符串数组,其他数组不变 |
| convertStringsToChars | 将字符串数组转换为字符数组,其他数组不变 |
| convertContainedStringsToChars | 在元胞数组或结构体的任何级别转换字符串数组 |
| :- | :- |
|---|---|
| double | 双精度数组 |
| string | 字符串数组 |
| str2double | 将字符串转换为双精度值 |
| num2str | 将数字转换为字符数组 |
查找
| :- | :- |
|---|---|
| contains | 确定字符串中是否有模式 |
| matches | 确定模式是否与字符串匹配 |
| count | 计算字符串中模式的出现次数 |
| endsWith | 确定字符串是否以模式结尾 |
| startsWith | 确定字符串是否以模式开头 |
| strfind | 在其他字符串中查找字符串 |
| sscanf | 从字符串读取格式化数据 |
替换
| :- | :- |
|---|---|
| replace | 查找并替换一个或多个子字符串 |
| replaceBetween | 替换起点和终点之间的子字符串 |
| strrep | 查找并替换子字符串 |
| :- | :- |
|---|---|
| pattern | 用于搜索和匹配文本的模式 |
| :- | :- |
|---|---|
| alphanumericsPattern | 匹配字母和数字字符 |
| characterListPattern | 匹配列表中的字符 |
| digitsPattern | 匹配数字字符 |
| lettersPattern | 匹配字母字符 |
| whitespacePattern | 匹配空白字符 |
| wildcardPattern | 匹配尽可能少的任意类型的字符 |
| :- | :- |
|---|---|
| optionalPattern | 使模式匹配可选 |
| possessivePattern | 匹配模式而不回溯 |
| caseSensitivePattern | 以区分大小写的方式匹配模式 |
| caseInsensitivePattern | 以不区分大小写的方式匹配模式 |
| asFewOfPattern | 模式匹配次数尽可能少 |
| asManyOfPattern | 模式匹配次数尽可能多 |
| :- | :- |
|---|---|
| alphanumericBoundary | 匹配字母数字字符与非字母数字字符之间的边界 |
| digitBoundary | 匹配数字字符和非数字字符之间的边界 |
| letterBoundary | 匹配字母字符和非字母字符之间的边界 |
| whitespaceBoundary | 匹配空白字符和非空白字符之间的边界 |
| lineBoundary | 匹配行首或行尾 |
| textBoundary | 匹配文本的开头或结尾 |
| lookAheadBoundary | 匹配指定模式之前的边界 |
| lookBehindBoundary | 匹配指定模式之后的边界 |
| :- | :- |
|---|---|
| maskedPattern | 具有指定显示名称的模式 |
| namedPattern | 指定命名模式 |
| :- | :- |
|---|---|
| regexp | 匹配正则表达式(区分大小写) |
| regexpi | 匹配正则表达式(不区分大小写) |
| regexprep | 使用正则表达式替换文本 |
| regexptranslate | 将文本转换为正则表达式 |
| regexpPattern | 匹配指定正则表达式的模式 |
| :- | :- |
|---|---|
| join | 合并字符串 |
| plus | 添加数字,追加字符串 |
| split | 在分隔符处拆分字符串 |
| splitlines | 在换行符处拆分字符串 |
| strjoin | 联接数组中的字符串 |
| strsplit | 在指定分隔符处拆分字符串或字符向量 |
| strtok | 所选的字符串部分 |
| extract | 从字符串中提取子字符串 |
| extractAfter | 提取指定位置后的子字符串 |
| extractBefore | 提取指定位置前的子字符串 |
| extractBetween | 提取起点和终点之间的子字符串 |
| :- | :- |
|---|---|
| erase | 删除字符串内的子字符串 |
| eraseBetween | 删除起点和终点之间的子字符串 |
| extract | 从字符串中提取子字符串 |
| extractAfter | 提取指定位置后的子字符串 |
| extractBefore | 提取指定位置前的子字符串 |
| extractBetween | 提取起点和终点之间的子字符串 |
| insertAfter | 在指定的子字符串后插入字符串 |
| insertBefore | 在指定的子字符串前插入字符串 |
| pad | 为字符串添加前导或尾随字符 |
| strip | 删除字符串中的前导和尾部字符 |
| lower | 将字符串转换为小写 |
| upper | 将字符串转换为大写 |
| reverse | 反转字符串中的字符顺序 |
| deblank | 删除字符串末尾的尾随空白 |
| strtrim | 从字符串中删除前导和尾随空白 |
| strjust | 对齐字符串 |
加法
减法
乘法
| :- | :- | :- |
|---|---|---|
| .* | 乘法 | |
| * | 矩阵乘法 | |
| prod | 数组元素的乘积 | |
| cumprod | 累积乘积 | |
| pagemtimes | 按页矩阵乘法 | |
| tensorprod | Tensor products between two tensors |
除法
| :- | :- | :- |
|---|---|---|
| ./ | 数组右除 | |
| .\ | 数组左除 | |
| / | 求解关于 x 的线性方程组 xA = B | |
| \ | 求解关于 x 的线性方程组 Ax = B |
幂
转置
| :- | :- | :- |
|---|---|---|
| .' | 转置向量或矩阵 | |
| ' | 复共轭转置 | |
| pagetranspose | 按页转置 | |
| pagectranspose | 按页复共轭转置 |
数组符号
| :- | :- | :- |
|---|---|---|
| bsxfun | 对两个数组应用按元素运算(启用隐式扩展) |
| :- | :- | :- |
|---|---|---|
| readtable | 基于文件创建表 | |
| writetable | 将表写入文件 | |
| readtimetable | 基于文件创建时间表 | |
| writetimetable | 将时间表写入文件 |
| :- | :- |
|---|---|
| detectImportOptions | 基于文件内容生成导入选项 |
| delimitedTextImportOptions | 为带分隔符的文本导入选项对象 |
| fixedWidthImportOptions | 等宽文本文件的导入选项对象 |
| xmlImportOptions | 为 XML 文件导入选项对象 |
| htmlImportOptions | Import options object for HTML files |
| wordDocumentImportOptions | Microsoft Word 文档文件的导入选项对象 |
| getvaropts | 获取变量导入选项 |
| setvaropts | 设置变量导入选项 |
| setvartype | 设置变量数据类型 |
| preview | 使用导入选项预览文件中的八行数据 |
| :- | :- | :- |
|---|---|---|
| readmatrix | 从文件中读取矩阵 | |
| writematrix | 将矩阵写入文件 | |
| readcell | 从文件中读取元胞数组 | |
| writecell | 将元胞数组写入文件 | |
| readvars | 从文件中读取变量 | |
| textscan | 从文本文件或字符串读取格式化数据 | |
| type | 显示文件内容 | |
| fileread | 以文本格式读取文件内容 | |
| readlines | 以字符串数组形式读取文件行 | |
| writelines | Write text to file |
基本导入和导出
| :- | :- | :- |
|---|---|---|
| readtable | 基于文件创建表 | |
| writetable | 将表写入文件 | |
| readtimetable | 基于文件创建时间表 | |
| writetimetable | 将时间表写入文件 | |
| sheetnames | 从电子表格文件中获取工作表名称 |
定义导入规则
| :- | :- |
|---|---|
| detectImportOptions | 基于文件内容生成导入选项 |
| spreadsheetImportOptions | 电子表格的导入选项对象 |
| getvaropts | 获取变量导入选项 |
| setvaropts | 设置变量导入选项 |
| setvartype | 设置变量数据类型 |
| preview | 使用导入选项预览文件中的八行数据 |
| :- | :- | :- |
|---|---|---|
| readmatrix | 从文件中读取矩阵 | |
| writematrix | 将矩阵写入文件 | |
| readcell | 从文件中读取元胞数组 | |
| writecell | 将元胞数组写入文件 | |
| readvars | 从文件中读取变量 | |
| importdata | 从文件加载数据 |
| :- | :- | :- |
|---|---|---|
| nccreate | 在 NetCDF 文件中创建变量 | |
| ncdisp | 在命令行窗口中显示 NetCDF 数据源内容 | |
| ncinfo | 返回有关 NetCDF 数据源的信息 | |
| ncread | 读取 NetCDF 数据源中的变量数据 | |
| ncreadatt | 读取 NetCDF 数据源中的属性值 | |
| ncwrite | 将数据写入 NetCDF 文件 | |
| ncwriteatt | 将属性写入 NetCDF 文件 | |
| ncwriteschema | 将 NetCDF 架构定义添加到 NetCDF 文件中 |
| :- | :- |
|---|---|
| netcdf.getChunkCache | 检索 NetCDF 库的区块缓存设置 |
| netcdf.inqLibVers | 返回 NetCDF 库版本信息 |
| netcdf.setChunkCache | 设置 NetCDF 库的默认分块缓存设置 |
| netcdf.setDefaultFormat | 更改默认 netCDF 文件的格式 |
| :- | :- |
|---|---|
| netcdf.abort | 还原最近的 netCDF 文件定义 |
| netcdf.close | 关闭 netCDF 文件 |
| netcdf.create | 创建新的 NetCDF 数据集 |
| netcdf.endDef | 结束 netCDF 文件定义模式 |
| netcdf.inq | 返回有关 netCDF 文件的信息 |
| netcdf.inqFormat | 确定 NetCDF 文件的格式 |
| netcdf.inqGrps | 检索子组 ID 数组 |
| netcdf.inqUnlimDims | 检索组中无限维度列表 |
| netcdf.open | 打开 NetCDF 数据源 |
| netcdf.reDef | 让打开的 netCDF 文件进入定义模式 |
| netcdf.setFill | 设置 netCDF 填充模式 |
| netcdf.sync | 将 netCDF 文件同步到磁盘 |
| :- | :- | :- |
|---|---|---|
| netcdf.defDim | 创建 netCDF 维度 | |
| netcdf.inqDim | 返回 netCDF 维度名称和长度 | |
| netcdf.inqDimID | 返回维度 ID | |
| netcdf.renameDim | 更改 netCDF 维度名 |
| :- | :- | :- |
|---|---|---|
| netcdf.defGrp | 在 NetCDF 文件中创建组 | |
| netcdf.inqDimIDs | 检索组中维度标识符列表 | |
| netcdf.inqGrpName | 检索组名 | |
| netcdf.inqGrpNameFull | 组的完整路径名 | |
| netcdf.inqGrpParent | 检索父组的 ID。 | |
| netcdf.inqNcid | 返回已命名组的 ID | |
| netcdf.inqVarIDs | 组中所有变量的 ID |
| :- | :- |
|---|---|
| netcdf.defVarFill | 定义 NetCDF 变量的填充参数 |
| netcdf.defVar | 创建 NetCDF 变量 |
| netcdf.defVarChunking | 定义 NetCDF 变量的分块行为 |
| netcdf.defVarDeflate | 定义 NetCDF 变量的压缩参数 |
| netcdf.defVarFletcher32 | 定义 NetCDF 变量的校验参数 |
| netcdf.getVar | 读取 NetCDF 变量中的数据 |
| netcdf.inqVar | 有关变量的信息 |
| netcdf.inqVarChunking | 确定 NetCDF 变量的分块设置 |
| netcdf.inqVarDeflate | 确定 NetCDF 变量的压缩设置 |
| netcdf.inqVarFill | 确定 NetCDF 变量的填充参数值 |
| netcdf.inqVarFletcher32 | 关于 NetCDF 变量的 Fletcher32 校验和设置 |
| netcdf.inqVarID | 返回与变量名相关联的 ID |
| netcdf.putVar | 将数据写入 netCDF 变量 |
| netcdf.renameVar | 更改 netCDF 变量名 |
| :- | :- | :- |
|---|---|---|
| netcdf.copyAtt | 将属性复制到新位置 | |
| netcdf.delAtt | 删除 netCDF 属性 | |
| netcdf.getAtt | 返回 NetCDF 属性 | |
| netcdf.inqAtt | 返回有关 netCDF 属性的信息 | |
| netcdf.inqAttID | 返回 netCDF 属性的 ID | |
| netcdf.inqAttName | 返回 netCDF 属性名称 | |
| netcdf.putAtt | 写入 netCDF 属性 | |
| netcdf.renameAtt | 更改属性名称 |
| :- | :- |
|---|---|
| netcdf.defVlen | Define user-defined variable length array type (NC_VLEN) |
| netcdf.inqUserType | Return information about user-defined type |
| netcdf.inqVlen | Return information about user-defined NC_VLEN type |
| :- | :- |
|---|---|
| netcdf.getConstant | 返回命名常量的数值 |
| netcdf.getConstantNames | 返回 netCDF 库已知的常量列表 |
| :- | :- |
|---|---|
| Library (H5) | General-purpose functions for use with entire HDF5 library |
| Attribute (H5A) | Metadata associated with datasets or groups |
| Dataset (H5D) | Multidimensional arrays of data elements and supporting metadata |
| Dimension Scale (H5DS) | Dimension scale associated with dataset dimensions |
| Error (H5E) | Error handling |
| File (H5F) | HDF5 file access |
| Group (H5G) | Organization of objects in file |
| Identifier (H5I) | HDF5 object identifiers |
| Link (H5L) | Links in HDF5 file |
| MATLAB (H5ML) | 不属于 HDF5 C 库的 MATLAB 工具函数 |
| Object (H5O) | Objects in file |
| Property (H5P) | Object property lists |
| Reference (H5R) | HDF5 references |
| Dataspace (H5S) | Dimensionality of dataset |
| Datatype (H5T) | Datatype of elements in a dataset |
| :- | :- |
|---|---|
| matlab.io.hdf4.sd | 直接与 HDF4 多文件科学数据集 (SD) 接口交互 |
| matlab.io.hdfeos.gd | 低级别访问 HDF-EOS 网格数据 |
| matlab.io.hdfeos.sw | 对 HDF-EOS 分段文件的低级别访问 |
| :- | :- |
|---|---|
| hdfan | HDF 多文件注释 (AN) 接口的入口 |
| hdfhx | HDF 外部数据 (HX) 接口的入口 |
| hdfh | HDF H 接口的入口 |
| hdfhd | HDF HD 接口的入口 |
| hdfhe | HDF HE 接口的入口 |
| hdfml | 与 MATLAB HDF 入口函数配合使用的实用工具 |
| hdfpt | HDF-EOS 点对象的接口 |
| hdfv | HDF Vgroup (V) 接口的入口 |
| hdfvf | HDF Vdata 接口中 VF 函数的入口 |
| hdfvh | HDF Vdata 接口中 VH 函数的入口 |
| hdfvs | HDF Vdata 接口中 VS 函数的入口 |
| hdfdf24 | HDF 24 位光栅图像 (DF24) 接口的入口 |
| hdfdfr8 | HDF 8 位光栅图像 (DFR8) 接口的入口 |
| :- | :- |
|---|---|
| createFile | 创建 FITS 文件 |
| openFile | 打开 FITS 文件 |
| openDiskFile | 打开 FITS 文件 |
| closeFile | 关闭 FITS 文件 |
| deleteFile | 删除 FITS 文件 |
| fileName | FITS 文件的名称 |
| fileMode | FITS 文件的 I/O 模式 |
| :- | :- |
|---|---|
| createImg | 创建 FITS 图像 |
| getImgSize | 图像大小 |
| getImgType | 图像的数据类型 |
| insertImg | 在当前图像后面插入 FITS 图像 |
| readImg | 读取图像数据 |
| setBscale | 重置图像缩放 |
| writeImg | 写入 FITS 图像 |
| :- | :- |
|---|---|
| readCard | 关键字的标头记录 |
| readKey | 关键字 |
| readKeyCmplx | 复数标量值形式的关键字 |
| readKeyDbl | 双精度值形式的关键字 |
| readKeyLongLong | int64 形式的关键字 |
| readKeyLongStr | 长字符串值 |
| readKeyUnit | 关键字中的物理单位字符串 |
| readRecord | 编号指定的标头记录 |
| writeComment | 向 CHU 写入或追加 COMMENT 关键字 |
| writeDate | 向 CHU 写入 DATE 关键字 |
| writeKey | 将新关键字更新或添加到当前 HDU 中 |
| writeKeyUnit | 写入物理单位字符串 |
| writeHistory | 向 CHU 写入或追加 HISTORY 关键字 |
| deleteKey | 按名称删除关键字 |
| deleteRecord | 按记录号删除关键字 |
| getHdrSpace | 标头中的关键字数量 |
| :- | :- |
|---|---|
| copyHDU | 将当前 HDU 从一个文件复制到另一个文件 |
| getHDUnum | FITS 文件中当前 HDU 的编号 |
| getHDUtype | 当前 HDU 的类型 |
| getNumHDUs | FITS 文件中的 HDU 总数 |
| movAbsHDU | 移至绝对 HDU 编号 |
| movNamHDU | 移至第一个包含特定类型和关键字值的 HDU |
| movRelHDU | 从当前 HDU 移动相对数量的 HDU |
| writeChecksum | 计算并写入当前 HDU 的校验和 |
| deleteHDU | 删除 FITS 文件中当前的 HDU |
| :- | :- |
|---|---|
| imgCompress | 将 HDU 从一个文件压缩到另一个文件中 |
| isCompressedImg | 确定当前图像是否已压缩 |
| setCompressionType | 设置图像压缩类型 |
| setHCompScale | 设置 HCOMPRESS 算法的缩放参数 |
| setHCompSmooth | 为使用 HCOMPRESS 压缩的图像设置平滑化 |
| setTileDim | 设置图块维度 |
| :- | :- |
|---|---|
| createTbl | 创建新的 ASCII 或二进制表扩展 |
| insertCol | 向表插入列 |
| insertRows | 向表插入行 |
| insertATbl | 在当前 HDU 后面插入 ASCII 表 |
| insertBTbl | 在当前 HDU 后面插入二进制表 |
| deleteCol | 从表中删除列 |
| deleteRows | 从表中删除行 |
| getAColParms | ASCII 表信息 |
| getBColParms | 二进制表信息 |
| getColName | 表列名称 |
| getColType | 经缩放的列的数据类型、重复值、宽度 |
| getEqColType | 列的数据类型、重复值、宽度 |
| getNumCols | 表中的列数 |
| getNumRows | 表中的行数 |
| readATblHdr | 从当前 ASCII 表中读取标头信息 |
| readBTblHdr | 从当前二进制表中读取标头信息 |
| readCol | 读取 ASCII 或二进制表列的行 |
| setTscale | 重置图像缩放 |
| writeCol | 向 ASCII 或二进制表列写入元素 |
| :- | :- |
|---|---|
| getConstantValue | 指定常量的数值 |
| getVersion | CFITSIO 库的修订号 |
| getOpenFiles | 已打开的 FITS 文件列表 |
| :- | :- |
|---|---|
| multibandread | 从二进制文件读取条带交错文件 |
| multibandwrite | 将条带交错数据写入文件 |
| :- | :- |
|---|---|
| VideoReader | 创建对象以读取视频文件 |
| read | 读取一个或多个视频帧 |
| readFrame | 读取下一个视频帧 |
| hasFrame | 确定是否有视频帧可供读取 |
| getFileFormats | VideoReader 支持的文件格式 |
| mmfileinfo | 有关多媒体文件的信息 |
| :- | :- |
|---|---|
| VideoWriter | 创建对象以写入视频文件 |
| open | 打开文件以写入视频数据 |
| writeVideo | 将视频数据写入到文件 |
| close | 写入视频数据之后关闭文件 |
| getProfiles | VideoWriter 支持的描述文件和文件格式 |
| :- | :- |
|---|---|
| audioread | 读取音频文件 |
| audiowrite | 写音频文件 |
| lin2mu | 将线性音频信号转换为 mu-law |
| mu2lin | 将 mu-law 音频信号转换为线性格式 |
| audioinfo | 有关音频文件的信息 |
| :- | :- |
|---|---|
| audioplayer | 用于播放音频的对象 |
| isplaying | 确定播放是否正在进行 |
| pause | 暂停播放或录制 |
| play | 从 audioplayer 对象播放音频 |
| playblocking | 播放 audioplayer 对象中的音频,保持控制权直到播放完成 |
| resume | 从暂停状态继续播放或录制 |
| stop | 停止播放或录制 |
| :- | :- |
|---|---|
| audiorecorder | 用于录制音频的对象 |
| getaudiodata | 将录制的音频信号存储在数值数组中 |
| getplayer | 创建关联的 audioplayer 对象 |
| isrecording | 确定录制是否正在进行 |
| record | 将音频录制到 audiorecorder 对象中 |
| recordblocking | 将音频录制到 audiorecorder 对象中,在录制完成前保持控制权 |
| :- | :- |
|---|---|
| audiodevinfo | 有关音频设备的信息 |
| audiodevreset | 刷新可用音频设备列表 |
| sound | 将信号数据矩阵转换为声音 |
| soundsc | 缩放数据和作为声音播放 |
| beep | 产生操作系统蜂鸣声 |
| :- | :- |
|---|---|
| matlab.io.xml.dom.DOMWriter | 串行化 XML 文档的写入器 |
| matlab.io.xml.dom.EntityResolver | 实体解析器的抽象基类 |
| matlab.io.xml.dom.FileWriter | 创建文本文件的写入器 |
| matlab.io.xml.dom.Locator | 元素在 XML 文件中的位置 |
| matlab.io.xml.dom.Parser | XML 标记解析器 |
| matlab.io.xml.dom.ParserConfiguration | XML 解析器选项 |
| matlab.io.xml.dom.ParseError | 指定 XML 标记解析错误 |
| matlab.io.xml.dom.ParseErrorHandler | Abstract base class for parse error handlers |
| matlab.io.xml.dom.ParseErrorLocator | Specifies location of parse error |
| matlab.io.xml.dom.ParseErrorSeverity | 表示 XML 标记解析错误严重性的枚举类 |
| matlab.io.xml.dom.ResourceIdentifier | XML 资源标识符 |
| matlab.io.xml.dom.ResourceIdentifierType | XML 资源标识符类型 |
| matlab.io.xml.dom.WriterConfiguration | XML DOM 写入器选项 |
| :- | :- |
|---|---|
| matlab.io.xml.dom.Attr | XML 元素的属性 |
| matlab.io.xml.dom.CDATASection | CDATA 节 |
| matlab.io.xml.dom.Comment | XML 文档中的注释 |
| matlab.io.xml.dom.Document | XML 文档 |
| matlab.io.xml.dom.DocumentFragment | 文档节点组 |
| matlab.io.xml.dom.DocumentType | 文档类型 |
| matlab.io.xml.dom.Element | XML 文档的元素 |
| matlab.io.xml.dom.Entity | 由文档类型定义的实体 |
| matlab.io.xml.dom.NamedNodeMap | 一组具有名称的文档节点 |
| matlab.io.xml.dom.NodeList | 文档节点列表 |
| matlab.io.xml.dom.Notation | 文档类型定义中的表示法 |
| matlab.io.xml.dom.ProcessingInstruction | XML 处理指令 |
| matlab.io.xml.dom.Text | XML 文档中的文本 |
| matlab.io.xml.dom.TypeInfo | 架构类型信息 |
| :- | :- |
|---|---|
| matlab.io.xml.transform.CompiledStylesheet | 编译的样式表 |
| matlab.io.xml.transform.ResultDocument | 将转换结果存储为文档 |
| matlab.io.xml.transform.ResultString | 将转换结果存储为字符串 |
| matlab.io.xml.transform.ResultFile | 将转换结果存储为文件 |
| matlab.io.xml.transform.SourceDocument | 用于转换的 XML 源文档 |
| matlab.io.xml.transform.SourceFile | 用于转换的 XML 源文件 |
| matlab.io.xml.transform.SourceString | 用于转换的 XML 源字符串 |
| matlab.io.xml.transform.StylesheetSourceDocument | 用于转换的样式表源文档 |
| matlab.io.xml.transform.StylesheetSourceFile | 用于转换的样式表源文件 |
| matlab.io.xml.transform.StylesheetSourceString | 用于转换的 XSL 源字符串 |
| matlab.io.xml.transform.Tracer | Trace execution of stylesheet |
| matlab.io.xml.transform.Transformer | XML 文档转换器 |
| :- | :- |
|---|---|
| matlab.io.xml.xpath.CompiledExpression | 编译的 XPath 表达式 |
| matlab.io.xml.xpath.EvalResultType | XPath 表达式计算的结果类型 |
| matlab.io.xml.xpath.Evaluator | XPath 表达式计算器 |
| matlab.io.xml.xpath.PrefixResolver | 用于命名空间前缀解析器的抽象基类 |
| :- | :- |
|---|---|
| jsondecode | 解码 JSON 格式的文本 |
| jsonencode | 基于结构化 MATLAB 数据创建 JSON 格式的文本 |
| :- | :- |
|---|---|
| serialportlist | 连接到您的系统的串行端口列表 |
| serialport | 连接到串行端口 |
| configureTerminator | 为与串行端口的 ASCII 字符串通信设置终止符 |
| configureCallback | 为与串行端口设备的通信设置回调函数和触发条件 |
| :- | :- |
|---|---|
| flush | 清空串行端口设备缓冲区 |
| getpinstatus | 获取串行引脚状态 |
| setRTS | 设置串行 RTS 引脚 |
| setDTR | 设置串行 DTR 引脚 |
| :- | :- |
|---|---|
| tcpclient | 创建与 TCP/IP 服务器的 TCP/IP 客户端连接 |
| echotcpip | 启动或停止 TCP/IP 回显服务器 |
| configureTerminator | 为通过 TCP/IP 与远程主机进行的 ASCII 字符串通信设置终止符 |
| configureCallback | 为通过 TCP/IP 与远程主机的通信设置回调函数和触发条件 |
| :- | :- |
|---|---|
| bluetoothlist | 扫描附近的 Bluetooth 经典设备 |
| bluetooth | 连接到 Bluetooth 经典设备 |
| configureTerminator | 为与 Bluetooth 设备的 ASCII 字符串通信设置终止符 |
| configureCallback | 为与 Bluetooth 设备的通信设置回调函数和触发条件 |
| :- | :- |
|---|---|
| blelist | 扫描附近的低功耗 Bluetooth 外围设备 |
| ble | 连接到低功耗 Bluetooth 外围设备 |
| characteristic | 访问低功耗 Bluetooth 外围设备的特征 |
| descriptor | 访问低功耗 Bluetooth 外围设备上的描述符 |
| read | 读取低功耗 Bluetooth 外围设备上的特征或描述符数据 |
| write | 将数据写入低功耗 Bluetooth 外围设备的特征或描述符 |
| subscribe | 订阅特征通知或指示 |
| unsubscribe | 取消订阅特征通知和指示 |
| :- | :- |
|---|---|
| ftp | 连接到 FTP 服务器以访问其文件 |
| sftp | Connection to SFTP server to access its files |
| ascii | 将 FTP 传输模式设置为 ASCII |
| binary | 将 FTP 传输模式设置为二进制 |
| cd | 更改或查看 SFTP 或 FTP 服务器上的当前文件夹 |
| close | 关闭与 SFTP 或 FTP 服务器的连接 |
| delete | 删除 SFTP 或 FTP 服务器上的文件 |
| dir | 列出 SFTP 或 FTP 服务器上的文件夹内容 |
| mget | 从 SFTP 或 FTP 服务器下载文件 |
| mkdir | 在 SFTP 或 FTP 服务器上创建新文件夹 |
| mput | 将文件或文件夹上传到 SFTP 或 FTP 服务器 |
| rename | 重命名 SFTP 或 FTP 服务器上的文件 |
| rmdir | 删除 SFTP 或 FTP 服务器上的文件夹 |
| :- | :- |
|---|---|
| thingSpeakRead | 读取存储在 ThingSpeak 通道中的数据 |
| thingSpeakWrite | 将数据写入 ThingSpeak 通道 |
MATLAB 支持面向对象编程,虽然很少有人使用。
MATLAB 的自定义类型可以分成全值类和句柄类,它们的区别在于句柄类相当于指针,赋值时只会进行浅拷贝,全值类总是会进行深拷贝。下面的例子只涉及全值类。
一个简单的 point2d 类(文件名必须与类名相同:point2d.m )
classdef point2d
properties % 属性
x
y
end
methods % 方法
function obj = point2d(x0,y0) % 构造方法
if nargin == 0
obj.x = 0;
obj.y = 0;
elseif nargin == 2
obj.x = x0;
obj.y = y0;
else
error("unsupported arguments")
end
end
function obj = normalize(obj) % 普通方法
% obj 相当于 Python 的 self
r = sqrt(obj.x^2+obj.y^2);
obj.x = obj.x/r;
obj.y = obj.y/r;
end
end
end
使用例如
a = point2d(3,4);
fprintf('(%f, %f)\n',a.x,a.y);
% (3.000000, 4.000000)
b = a.normalize();
fprintf('(%f, %f)\n',b.x,b.y);
% (0.600000, 0.800000)
可以给属性提供默认值
classdef point2d
properties
x = cos(pi/12);
y = sin(pi/12);
end
...
end
默认值不需要是常量,可以是任何表达式
classdef demo
properties
time_stamp = date;
end
...
end
属性的默认值在类被加载时会被计算,并不会在每一个对象创建时重新计算。
可以将属性标记为只读(Constant),不允许对其进行修改。
classdef demo
properties(Constant)
R = pi/180;
end
...
end
尝试修改会报错
s = demo();
disp(s.R)
s.R = 100; % error
与类同名的方法称为构造方法。MATLAB只允许创建一个构造方法,但是我们通过nargin判断参数个数,并据此实现不同的创建行为,例如
function obj = point2d(x0,y0)
if nargin == 0
obj.x = 0;
obj.y = 0;
elseif nargin == 2
obj.x = x0;
obj.y = y0;
else
error("unsupported arguments")
end
end
例如
s1 = point2d(1,2);
s2 = point2d();
s3 = point2d;
类的普通方法的第一个参数是对象自身,并且习惯上使用obj表示。
classdef demo
properties
x = 100;
end
methods
function z = compute(obj,y)
z = obj.x + y;
end
end
end
普通方法可以通过对象或类调用
s = demo();
s.compute(10); % 110
compute(s,20); % 120
MATLAB 提供了静态方法,在定义时标记为 Static,静态方法没有obj参数,不绑定任何的对象,不能访问类对象的普通属性,但是可以访问类的常量属性。
例如
classdef demo
methods(Static) % 静态方法
function hello()
disp("hello,world!")
end
end
end
使用例如
>> demo.hello()
hello,world!
>> s = demo();
>> s.hello()
hello,world!
可以通过提供disp方法来定制自定义类型调用disp函数时的行为,例如
classdef point2d
properties
x = 0
y = 0
end
methods
function disp(obj)
fprintf("(%f,%f)",obj.x,obj.y);
end
end
end
提供disp函数后的输出
>> s = point2d();
>> disp(s)
(0.000000,0.000000)
作为对比,默认情况下的输出
>> s = point2d();
>> disp(s)
point2d with properties:
x: 0
y: 0
R: 0.0175
MATLAB 支持自定义类型对运算符的重载,例如plus方法对应加法。
classdef point2d
properties
x
y
end
methods
function obj = point2d(x0,y0)
% same as before
end
function result = plus(obj, other)
result = point2d(obj.x + other.x, obj.y + other.y);
end
end
end
例如
>> a = point2d(1,0);
>> b = point2d(0,2);
>> a + b
ans =
point2d with properties:
x: 1
y: 2
MATLAB 提供了比 C++ 和 Java 更加精细的访问权限控制,默认情况下所有的属性和方法都是public。
基本的三种权限例如
classdef demo
properties % public
x1
end
properties(Access = protected)
x2
end
properties(Access = privated)
x3
end
methods % public
function h1(obj)
end
end
methods(Access = protected)
function h2(obj)
end
end
methods(Access = privated)
function h3(obj)
end
end
end
MATLAB对属性提供了更精细的访问权限,可以将其拆分为读权限和写权限,例如
classdef demo
properties(SetAccess = private)
x1
end
properties(SetAccess = private, GetAccess = protected)
x2
end
end
MATLAB 使用 < 表示继承关系。
基类
classdef demo
properties
Value
end
methods
function obj = demo(val)
if nargin > 0
obj.Value = val;
else
obj.Value = 0;
end
end
function displayValue(obj)
disp(['Value: ', num2str(obj.Value)]);
end
end
end
派生类
classdef demo2 < demo
properties
ExtraValue
end
methods
function obj = demo2(val, extraVal)
obj = obj@demo(val); % 调用基类构造方法
if nargin > 1
obj.ExtraValue = extraVal;
else
obj.ExtraValue = 0;
end
end
function displayValue(obj)
displayValue@demo(obj); % 调用基类的同名函数
disp(['Extra Value: ',num2str(obj.ExtraValue)]);
end
end
end
MATLAB提供了抽象方法和抽象类。
抽象基类(不可实例化)
classdef demo
methods(Abstract) % 抽象方法
hello(obj) % 只有接口,没有实现
end
end
继承自抽象基类的派生类(实现了抽象方法,可以实例化)
classdef demo2 < demo
methods
function hello(obj) % 实现抽象方法
disp("hello,world!")
end
end
end
可以使用 Sealed 关键词来禁止一个类被继承,例如
classdef (Sealed) demo
...
end
可以使用 Sealed 关键词来禁止方法被派生类重写,例如
classdef demo
methods(Sealed)
...
end
end