matlab总结
简介
- MATLAB是MathWorks开发的一种编程语言。
- MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
- MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)
- MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。
- MATLAB的基本数据单位是矩阵
- 它为线性代数,统计,傅立叶分析,滤波,优化,数值积分和求解常微分方程提供了庞大的数学函数库。
- 它提供了用于使数据可视化的内置图形以及用于创建自定义图的工具。
- 它提供了将基于MATLAB的算法与外部应用程序和语言(例如C,Java,.NET和Microsoft Excel)集成在一起的功能。
- MATLAB被广泛用作科学和工程领域的计算工具,涵盖了物理,化学,数学和所有工程流领域。它可用于多种应用中,包括-信号处理与通讯、图像和视频处理、控制系统、测试与量测、计算金融、计算生物学
教程
https://www.cainiaojc.com/matlab
https://ww2.mathworks.cn/help/matlab/getting-started-with-matlab.html
问答社区
https://ww2.mathworks.cn/support/search.html?fq%5B%5D=asset_type_name:answer&fq%5B%5D=category:matlab/getting-started-with-matlab&page=1&s_tid=CRUX_topnav
计算数学能力
- 处理矩阵和数组
- 2-D和3-D绘图和图形
- 线性代数
- 代数方程
- 非线性函数
- 统计数据
- 数据分析
- 微积分和微分方程
- 数值计算
- 集成(Integration)
- 变换(Transforms)
- 曲线拟合
- 各种其他特殊功能
下载
https://www.mathworks.com/downloads/web_downloads/
使用:
可以在命令窗口中使用>>命令提示符下输入命令

基本语法
分号
分号(;)表示语句结束。但是,如果要隐藏和隐藏表达式的MATLAB输出,请在表达式后添加分号。
x = 3;
y = x + 5
可以在同一行上进行多个分配:
a = 2; b = 7; c = a * b
百分号
百分号(%)用于指示注释行。例如
x = 9 % 将值9赋给x
还可以使用块注释运算符%{和%}编写注释块
运算符和特殊字符
| 运算符 | 作用 |
|---|---|
| + |
加; 加法运算符。 |
| - |
减; 减法运算符。 |
| * |
标量和矩阵乘法运算符。 |
| .* |
数组乘法运算符。 |
| ^ |
标量和矩阵求幂运算符。 |
| .^ |
数组求幂运算符。 |
| \ |
左除法运算符。 |
| / |
右除法运算符。 |
| .\ |
数组左除法运算符。 |
| ./ |
数组右除法运算符。 |
| : |
冒号;生成规则间距的元素并表示整行或整列。 |
| ( ) |
圆括号;封闭函数参数和数组索引;重写优先级。 |
| [ ] |
括号;附件数组元素。 |
| . |
小数点。 |
| … |
省略号;行连续运算符 |
| , |
逗号;分隔一行中的语句和元素 |
| ; |
分号; 分隔列并抑制显示。 |
| % |
百分号;指定注释并指定格式。 |
| _ |
引用符号和转置运算符。 |
| ._ |
Nonconjugated转置运算符。 |
| = |
赋值运算符。 |
特殊变量和常量
| 名称 | 意义 |
|---|---|
| ans |
最近计算的答案。 |
| eps |
浮点精度。 |
| i,j |
虚数单位√-1。 |
| Inf |
无穷。 |
| NaN |
未定义的数值结果(不是数字)。 |
| pi | π |
命名变量
变量名称由字母组成,后跟任意数量的字母,数字或下划线。
大小写敏感
变量
在MATLAB环境中,每个变量都是一个数组或矩阵。
如定义
x = 3
它创建一个名为x的1乘1矩阵,并将值3存储在其元素中。
当表达式返回未分配给任何变量的结果时,系统会将其分配给名为ans的变量,该变量可在以后使用。
sqrt(78)
执行,输出为以下相当于把结果赋值给了ans变量
ans = 8.8318
可以使用ans变量参与其他计算
sqrt(78);
9876/ans
输出
ans = 1118.2
命令
MATLAB是一个用于数值计算和数据可视化的交互式程序。您可以通过在命令窗口的MATLAB提示符 '>>' 处键入命令来输入命令。
管理会话的命令:
| 命令 | 目的 |
|---|---|
| clc | 清除命令窗口。 |
| clear | 从内存中删除变量。 |
| exist | 检查文件或变量的存在。 |
| global | 声明变量为全局变量。 |
| help | 搜索帮助主题。 |
| lookfor | 在帮助条目中搜索关键字。 |
| quit | 停止MATLAB。 |
| who | 列出当前变量。 |
| whos | 列出当前变量(长显示)。 |
用于系统的命令
| 命令 | 目的 |
|---|---|
| cd | 更改当前目录。 |
| date | 显示当前日期。 |
| delete | 删除文件。 |
| diary | 开启/关闭日记文件录制。 |
| dir | 列出当前目录中的所有文件。 |
| load | 从文件加载工作区变量。 |
| path | 显示搜索路径。 |
| pwd | 显示当前目录。 |
| save | 将工作空间变量保存在文件中。 |
| type | 显示文件的内容。 |
| what | 列出当前目录中的所有MATLAB文件。 |
| wklread | 读取.wk1电子表格文件。 |
输入和输出命令
| 命令 | 目的 |
|---|---|
| disp | 显示数组或字符串的内容。 |
| fscanf | 从文件中读取格式化的数据。 |
| format | 控制屏幕显示格式。 |
| fprintf | 执行对屏幕或文件的格式化写入。 |
| input | 显示提示并等待输入。 |
| ; | 禁止丝网印刷。 |
fscanf和fprintf命令的行为像C的scanf和printf函数。它们支持以下格式代码
| 格式代码 | 目的 |
|---|---|
| %s | 格式化为字符串。 |
| %d | 格式化为整数。 |
| %f | 格式化为浮点值。 |
| %e | 以科学计数形式格式化为浮点值。 |
| %g | 以最紧凑的格式进行格式化:%f或%e。 |
| \n | 在输出字符串中插入新行。 |
| \t | 在输出字符串中插入一个选项卡。 |
向量,矩阵和数组命令
| 命令 | 目的 |
|---|---|
| cat | 连接数组。 |
| find | 查找非零元素的索引。 |
| length | 计算元素数。 |
| linspace | 创建规则间隔的矢量。 |
| logspace | 创建对数间隔的向量。 |
| max | 返回最大元素。 |
| min | 返回最小的元素。 |
| prod | 每列的乘积。 |
| reshape | 更改大小。 |
| size | 计算数组大小。 |
| sort | 对每一列进行排序。 |
| sum | 对每列求和。 |
| eye | 创建一个单位矩阵。 |
| ones | 创建一个数组。 |
| zeros | 创建一个零数组。 |
| cross | 计算矩阵叉积。 |
| dot | 计算矩阵点积。 |
| det | 计算数组的行列式。 |
| inv | 计算矩阵的逆。 |
| pinv | 计算矩阵的伪逆。 |
| rank | 计算矩阵的秩。 |
| rref | 计算精简行梯形表格。 |
| cell | 创建单元格数组。 |
| celldisp | 显示单元格数组。 |
| cellplot |
显示单元格数组的图形表示形式。 |
| num2cell | 将数字数组转换为单元格数组。 |
| deal | 匹配输入和输出列表。 |
| iscell |
标识单元格数组。 |
绘图命令
| 命令 | 目的 |
|---|---|
| axis | 设置轴限制。 |
| fplot |
函数的智能绘图。 |
| grid | 显示网格线。 |
| plot | 生成xy图。 |
| 打印图或将图保存到文件中。 | |
| title | 将文本放在图的顶部。 |
| xlabel | 在x轴上添加文本标签。 |
| ylabel | 将文本标签添加到y轴。 |
| axes | 创建轴对象。 |
| close | 关闭当前图。 |
| close all | 关闭所有地块。 |
| figure | 打开一个新的图形窗口。 |
| gtext | 通过鼠标启用标签放置。 |
| hold | 冻结当前图。 |
| legend | 用鼠标放置图例。 |
| refresh | 重新绘制当前图形窗口。 |
| set | 指定对象(例如轴)的属性。 |
| subplot | 在子窗口中创建图。 |
| text | 在图中放置字符串。 |
| bar | 创建条形图。 |
| loglog | 创建对数-对数图。 |
| polar | 创建极坐标图。 |
| semilogx | 创建半对数图。(对数横坐标)。 |
| semilogy | 创建半对数图。(对数纵坐标)。 |
| stairs | 创建楼梯图。 |
| stem | 创建茎图。 |
save 命令
save 命令:用于将工作空间中的所有变量保存为当前目录中扩展名为.mat的文件。
save myfile
load命令:加载文件
load myfile
who命令whos命令
who命令显示您已使用的所有变量名。
who
输出
Your variables are:
a ans b c
whos命令显示了有关变量的更多信息-
- 当前内存中的变量
- 每个变量的类型
- 分配给每个变量的内存
- 它们是否为复杂变量
whos
输出:
Attr Name Size Bytes Class
==== ==== ==== ==== =====
a 1x1 8 double
ans 1x70 757 cell
b 1x1 8 double
c 1x1 8 double
Total is 73 elements using 781 bytes
clear命令
clear x % it will delete x, won't display anything
clear % it will delete all variables in the workspace
% peacefully and unobtrusively
format命令
| 格式功能 | 最多显示 |
|---|---|
| format short |
四个小数位(默认值)。 |
| format long |
16位小数。 |
| format short e | 五位数加指数。 |
| format long e | 16位数字加指数。 |
| format bank | 两个小数位数。定点货币形式 |
| format + | 正数,负数或零。 |
| format rat | 有理近似。小数分数表示 |
| format compact | 禁止某些换行符。 |
| format loose | 重置为不太紧凑的显示模式。 |
默认情况下,MATLAB显示带有四个小数位值的数字。这就是所谓的short format。
但是,如果要提高精度,则需要使用format命令。
format long命令在小数点后显示16位数字。
format long
x = 7 + 10/3 + 5 ^ 1.2
输出:
x = 17.2319816406394
short format保留4位小数
format short
x = 7 + 10/3 + 5 ^ 1.2
x = 17.232
format bank命令将数字四舍五入到小数点后两位。
format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6
weekly_wage = 1064.70
format short e命令允许以指数形式显示,小数点后四个位加上指数。
format short e
4.678 * 4.9
ans = 2.2922e+01
format long e命令允许以指数形式显示,小数点后四个位加上指数。
format long e
x = pi
x = 3.141592653589793e+00
format rat命令给出了由计算得出的最接近的有理表达式。
format rat
4.678 * 4.9
ans = 34177/1491
向量
向量是一维数字数组。MATLAB允许创建两种类型的向量:
- 行向量
- 列向量
Row vectors(行向量) 通过将元素集括在方括号中并使用空格或逗号定界元素来创建。
r = [7 8 9 10 11]
MATLAB将执行上述语句并返回以下结果
r =
7 8 9 10 11
执行:
r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t
输出:
res =
9 11 13 15 17
Column vectors(列向量) 通过将元素集括在方括号中并使用分号(;)分隔元素来创建。
c = [7; 8; 9; 10; 11]
MATLAB将执行上述语句并返回以下结果:
c =
7
8
9
10
11
矩阵
矩阵是数字的二维数组。在MATLAB中,通过以空格或逗号分隔的元素的顺序输入每一行来创建矩阵,并用分号分隔行的结尾。
m = [1 2 3; 4 5 6; 7 8 9]
输出:
m =
1 2 3
4 5 6
7 8 9
m文件
说明
MATLAB允许编写两种程序文件-
- 脚本−脚本文件是扩展名为.m的程序文件。在这些文件中,您编写了一系列要一起执行的命令。脚本不接受输入,也不返回任何输出。它们对工作区中的数据进行操作。
- 函数−函数文件也是扩展名为.m的程序文件。函数可以接受输入并返回输出。内部变量是函数的局部变量。
创建文件
可以使用MATLAB编辑器或任何其他文本编辑器来创建.m文件。
可以通过两种方式打开MATLAB编辑器:
- 使用命令提示符
- 使用IDE
使用命令提示符,请键入edit命令提示符。这将打开编辑器。您可以直接输入edit,然后输入文件名(扩展名为.m)
edit
或者:
edit myfile.m
上面的命令将在默认的MATLAB目录中创建文件。如果要将所有程序文件存储在特定文件夹中,则必须提供完整路径。
可以建一个文件夹,之后在文件夹中创建文件:
mkdir progs % create directory progs under default directory
chdir progs % changing the current directory to progs
edit prog1.m % creating an m file named prog1.m
如果是第一次创建文件,MATLAB会提示您进行确认。单击是。
或者,如果您使用的是IDE,请选择“新建”->“脚本”。这还将打开编辑器并创建一个名为“无标题”的文件。您可以在键入代码后命名并保存文件。
运行文件
例如创建的文件内容为:
NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
+ NonTeachingStaff;
disp(Total);
创建并保存文件后,可以通过两种方式运行它
- 单击Run编辑器窗口上的按钮或
- 只需在命令提示符下键入文件名(不带扩展名):>> myfile
命令窗口提示符显示结果:
6170
示例:
a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)
输出:
c = 12
d = 12.657
e = 63.285
f = 3.1852e-06
数据类型
MATLAB 不需要任何类型声明或维度语句。每当 MATLAB 遇到一个新的变量名,它就创建变量并分配适当的内存空间。
如果变量已经存在,那么MATLAB将用新内容替换原始内容,并在必要时分配新的存储空间。
MATLAB提供了15种基本数据类型。每种数据类型都存储矩阵或数组形式的数据。此矩阵或数组的大小最小为0×0,并且可以增长到任意大小的矩阵或数组。
- int8:8位有符号整数
- uint8:8位无符号整数
- int16:16位有符号整数
- uint16:16位无符号整数
- int32:32位有符号整数
- uint32:32位无符号整数
- int64:64位有符号整数
- uint64:64位无符号整数
- single:单精度数值数据
- double:双精度数值数据
- logical:逻辑值1或0,分别表示true和false
- char:字符数据(字符串存储为字符向量)
- cell array:索引单元格数组,每个单元格能够存储不同维度和数据类型的数组
- structure:类似于C的结构,每个结构都具有能够存储不同维度和数据类型的数组的命名字段
- function handle:指向函数的指针
- user classes:从用户定义的类构造的对象
- java classes:从Java类构造的对象
str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)
输出
str = Hello World!
n = 2345
d = 2345
un = 790
rn = 5678.9
c = 5679
数据类型转换:
MATLAB提供了用于将值从一种数据类型转换为另一种数据的各种函数
| 函数 | 作用 |
|---|---|
| char |
转换为字符数组(字符串) |
| int2str | 将整数数据转换为字符串 |
| mat2str |
将矩阵转换为字符串 |
| num2str | 将数字转换为字符串 |
| str2double |
将字符串转换为双精度值 |
| str2num | 将字符串转换为数字 |
| native2unicode |
将数字字节转换为 Unicode 字符 |
| unicode2native | 将Unicode字符转换为数字字节 |
| base2dec |
将N进制数字符串转换为十进制数 |
| bin2dec | 将二进制数字符串转换为十进制数 |
| dec2base |
将十进制数转换为字符串中的N进制数 |
| dec2bin | 将十进制转换为字符串中的二进制数 |
| dec2hex |
将字符串中的十进制数转换为十六进制数 |
| hex2dec | 将十六进制数字字符串转换为十进制数字 |
| hex2num | 将十六进制数字字符串转换为双精度数字 |
| num2hex |
将单精度和双精度转换为IEEE十六进制字符串 |
| cell2mat | 将单元格数组转换为数值数组 |
| cell2struct |
将单元数组转换为结构数组 |
| cellstr | 从字符数组创建字符串的单元格数组 |
| mat2cell | 将数组转换为单元格大小可能不同的单元格 |
| num2cell |
将数组转换为大小一致的单元格数组 |
| struct2cell | 将结构转换为单元格数组 |
数据类型的确定:
MATLAB提供了各种功能来识别变量的数据类型。
| is | 检测状态 |
| isa | 确定输入是否为指定类的对象 |
| iscell | 确定输入是否为单元格数组 |
| iscellstr | 确定输入是否为字符串的单元格数组 |
| ischar | 确定项目是否为字符数组 |
| isfield | 确定输入是否为结构数组字段 |
| isfloat | 确定输入是否为浮点数组 |
| ishghandle |
适用于处理图形对象句柄 |
| isinteger | 确定输入是否为整数数组 |
| isjava | 确定输入是否为Java对象 |
| islogical | 确定输入是否为逻辑数组 |
| isnumeric | 确定输入是否为数值数组 |
| isobject | 确定输入是否为MATLAB对象 |
| isreal | 检查输入是否为实数数组 |
| isscalar | 确定输入是否为标量 |
| isstr | 确定输入是否为字符数组 |
| isstruct | 确定输入是否为结构数组 |
| isvector | 确定输入是否为向量 |
| class | 确定对象的类别 |
| validateattributes | 检查数组的有效性 |
| whos | 列出工作空间中的变量,包括大小和类型 |
x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
输出:
x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =
1 2 3
ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0

浙公网安备 33010602011771号