数学建模-Matlab学习笔记(三)
本文最后更新于:December 3, 2021 pm
MATLAB(矩阵实验室)是第四代高层次的编程语言和交互式环境数值计算,可视化和编程。由美国MathWorks公司开发的一种编程语言。用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。拥有众多的内置命令和数学函数,可以帮助您在数学计算,绘图和执行数值计算方法。
目录
1.MATLAB 变量
每个MATLAB变量可以是数组或者矩阵。变量是在程序运行中值可以改变的量,变量由变量名来表示。在 MATLAB 语言中变量的命名遵循如下规则:
- 变量名区分大小写。
- 变量名长度不得超过 31 位,第 31 个字符之后的字符将被 MATLAB 语言所忽略。
- 变量名以字母开头,可以是字母、数字、下划线组成,但不能使用标点。
MATLAB 不要求事先对变量进行声明,也不需要指定变量类型,但使用变量前,必须进行赋值。 MATLAB 会自动依据所赋予变量的值或对变量所进行的操作来识别变量的类型。在赋值过程中如果如果赋值变量已存在时,MATLAB 将使用新值代替旧值,并以新值类型代替旧值类型。在未加特殊说明的情况下,MATLAB 语言将所识别的一切变量视为局部变量,即仅在其使用的 M 文件内有效。若要将变量定义为全局变量,则应当对变量进行说明,即在该变量前加关键字 global。一般来说,全局变量均用大写的英文字符表示。
在 MATLAB 中,有一类特殊的变量,是由系统默认给定符号来表示的。
变量名称 | 变量含义 | 变量名称 | 变量含义 |
---|---|---|---|
ans |
MATLAB 中的默认变量 | i(j) |
复数中的虚数单位 |
pi |
圆周率 | nargin |
所用函数的输入变量数 |
eps |
计算机中的最小数,PC 机上为 2的负 52 次方 | nargout |
所用函数的输出变量数 |
inf |
无穷大,如 1/0 | realmin |
最小可用正实数 |
NaN |
不定值,如 0/0 等 | realmax |
最大可用正实数 |
示例1:
1 |
|
示例2:
1 |
|
示例3:当表达式返回一个结果,不分配给任何变量,系统分配给一个变量命名ans,以后可以继续使用。
1 |
|
MATLAB可以多个赋值。
1 |
|
1.1 MATLAB 显示已经使用的变量名
可以使用 who 命令显示所有已经使用的变量名。
1 |
|
whos 命令
- 当前内存中的变量
- 每个变量的类型
- 内存分配给每个变量
- 无论他们是复杂的变量与否
示例:
1 |
|
1.2 删除变量
clear命令删除所有(或指定)从内存中的变量(S)。
示例:
1 |
|
1.3 长任务(续行符)
长任务是可以通过使用省略号(…)延伸到另一条线路。
示例:
1 |
|
1.4 格式命令
默认情况下,MATLAB 四个小数位值显示数字。这就是所谓的 short format。如果想更精确,需要使用 format 命令。长(long ) 命令格式显示小数点后16位。
示例1:format long
1 |
|
示例2:format short
1 |
|
示例3:空格格式命令回合到小数点后两位数字。
1 |
|
- MATLAB 显示大量使用指数表示法。短格式 e命令 允许以指数的形式显示小数点后四位,加上指数。
示例:
1 |
|
(自我理解)需要注意的是,如:4.6784.9=2.2922e+01 ,正常结果为 22.922 ,其中 2.2922e+01 后面的 +01 表示的是从右边(正方向)向左边(负方向)移动了 1 个小数点后的结果;再如:0.2340.124=2.9016e-02,正常结果为 0.029016,其中 2.9016e-02 后面的 -02 表示从左边(负方向)向右边(正方向)移动了2 个小数点后的结果。且保留4位小数点时,会四舍五入掉第5位数。
- format long e命令允许以指数的形式显示小数点后十六位,加上指数。
1 |
|
- format rat 格式命令给出最接近的有理表达式,从计算所得。
1 |
|
1.5 关键字
MATLAB 的关键字是指预先定义的有特别意义的标识符,有时也叫保留字。像其他语言一样,MATLAB 包含算数运算、逻辑运算、关系运算等运算类型,每种类型的运算都有自己的运算符,并可对关系和逻辑进行运算,而且都有相应的运算函数。这些有特定意义的符号和名字是不能被指定为变量名称的。比如下表中的特殊变量名、MATLAB 的管理类命令、编程控制语句等。
1.6 创建向量
向量是一维数组中的数字。 MATLAB允许创建两种类型的矢量:行向量、列向量。
1.6.1 行向量
创建行向量包括在方括号中的元素的集合,用空格或逗号分隔的元素。
示例1:
1 |
|
示例2:
1 |
|
1.6.2 列向量
创建列向量通过方括号中的元素,使用分号(;)分隔。
示例:
1 |
|
1.7 创建矩阵
1.7.1 直接输入
矩阵是一个二维数字阵列。在MATLAB中,创建一个矩阵每行输入空格或逗号分隔的元素序列,最后一排被划定一个分号。
示例:
1 |
|
1.7.2 利用已有的矩阵创建
一个大矩阵可以由已经存在的小矩阵拼接而成。
实例:
1 |
|
1.7.3 用实部矩阵和复数矩阵构建复数矩阵
实例:
1 |
|
1.7.4 结构矩阵和单元矩阵
1.7.4.1 结构矩阵
格式为:结构矩阵元素.成员名=表达式
示例:
1 |
|
1.7.4.2 单元矩阵
建立方式与一般矩阵相似,只是单元矩阵元素用大括号括起来。
示例:
1 |
|
1.8 矩阵元素的引用
1.8.1 通过下标
示例:
1 |
|
1.8.2 通过序号
示例:
1 |
|
其中,序号与下标是一 一对应的,以 m * n
矩阵 A 为例,矩阵元素 A(i,j)
的序号为(j-1)*m+i
。
矩阵元素的序号与下标可以利用sub2ind
和ind2sub
函数实现相互转换。
sub2ind函数
sub2ind
:将矩阵中指定元素的行、列下标转换成存储的序号。格式为:D=sub2ind(S,I,J)
。其中,D
为对应下标元素的序号;S
为行数和列数组成的向量;I
转换矩阵元素的行下标;J
转换矩阵元素的列下标。
示例:
1 |
|
ind2sub函数
ind2sub
:将把矩阵元素的序号转换成对应的下标。格式为:[i,j]=ind2sub(S,D)
。其中,[i,j]
分别为行下表和列下标;S
为行数和列数组成的向量;D
为序号。
示例:
1 |
|
1.9 利用冒号表达式获得子矩阵
1 |
|
end运算符
:表示某一维的末尾元素下标。
示例:
1 |
|
1.10 删除矩阵元素
利用空矩阵删除矩阵的元素。空矩阵是指没有任何元素的矩阵。如:x=[]
。
1.11 改变矩阵的行、列数
reshape(A,m,n)
:在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n
的二维矩阵。但它只是改变原矩阵的行数和列数,但并不改变原矩阵元素个数及其存储顺序。
A(:)
:将矩阵A的每一列元素堆叠起来,成为一个列向量。A(:)
等价于reshape(A,6,1)
。
2.MATLAB 命令
2.1 管理会话的命令(命令行窗口)
命令 | 目的/作用 |
---|---|
clc |
清除命令窗口。 |
clear |
从内存中删除变量。 |
exist |
检查存在的文件或变量。 |
global |
声明变量为全局。 |
help |
搜索帮助主题。 |
lookfor |
搜索帮助关键字条目。 |
quit |
停止MATLAB。 |
who |
列出当前变量。 |
whos |
列出当前变量(长显示)。 |
2.2 系统命令
使用MATLAB的时候有一些系统命令可以方便操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。
命令 | 目的/作用 |
---|---|
cd |
改变当前目录。 |
date |
显示当前日期。 |
delete |
删除一个文件。 |
diary |
日记文件记录开/关切换。 |
dir |
列出当前目录中的所有文件。 |
load |
负载工作区从一个文件中的变量。 |
path |
显示搜索路径。 |
pwd |
显示当前目录。 |
save |
保存在一个文件中的工作区变量。 |
type |
显示一个文件的内容。 |
what |
列出所有MATLAB文件在当前目录中。 |
wklread |
读取.wk1电子表格文件。 |
2.3 输入和输出命令
命令 | 作用/目的 |
---|---|
disp |
显示一个数组或字符串的内容。 |
fscanf |
阅读从文件格式的数据。 |
format |
控制屏幕显示的格式。 |
fprintf |
执行格式化写入到屏幕或文件。 |
input |
显示提示并等待输入。 |
; |
禁止显示网版印刷 |
其中,fscanf 和 fprintf 命令的行为像 C 的 scanf 和 printf 函数。支持格式:
格式代码 | 目的/作用 |
---|---|
%s |
输出字符串 |
%d |
输出整数 |
%f |
输出浮点数 |
%e |
显示科学计数法形式 |
%g |
%f 和%e 的结合,根据数据选择适当的显示方式 |
用于数字显示格式的函数:
Format函数 | 最多可显示 |
---|---|
format short |
四位十进制数(默认) |
format long |
15位定点表示 |
format short e |
五位浮点表示 |
format long e |
15位浮点表示 |
format bank |
两个十进制数字 |
format + |
正,负或零 |
format rat |
有理数近似 |
format compact |
变量之间没有空行 |
format loose |
变量之间有空行 |
2.4 向量、矩阵和阵列命令
MATLAB用于工作数组、矩阵和向量的各种命令。
命令 | 作用/目的 |
---|---|
cat |
连接数组 |
find |
查找非零元素的索引 |
length |
计算元素数量 |
linspace |
创建间隔向量 |
logspace |
创建对数间隔向量 |
max |
返回最大元素 |
min |
返回最小元素 |
prod |
计算数组元素的连乘积 |
reshape |
重新调整矩阵的行数、列数、维数 |
size |
计算数组大小 |
sort |
排序每个列 |
sum |
每列相加 |
eye |
创建一个单位矩阵 |
ones |
生成全1矩阵 |
zeros |
生成零矩阵 |
cross |
计算矩阵交叉乘积 |
dot |
计算矩阵点积 |
det |
计算数组的行列式 |
inv |
计算矩阵的逆 |
pinv |
计算矩阵的伪逆 |
rank |
计算矩阵的秩 |
rref |
将矩阵化成行最简形 |
cell |
创建单元数组 |
celldisp |
显示单元数组 |
cellplot |
显示单元数组的图形表示 |
num2cell |
将数值阵列转化为异质阵列 |
deal |
匹配输入和输出列表 |
iscell |
判断是否为元胞类型 |
2.5 绘图命令
命令 | 作用/目的 |
---|---|
axis |
人工选择坐标轴尺寸 |
fplot |
智能绘图功能 |
grid |
显示网格线 |
plot |
生成XY图 |
print |
打印或绘图到文件 |
title |
把文字置于顶部 |
xlabel |
将文本标签添加到x轴 |
ylabel |
将文本标签添加到y轴 |
axes |
创建轴对象 |
close |
关闭当前的绘图 |
close all |
关闭所有绘图 |
figure |
打开一个新的图形窗口 |
gtext |
通过鼠标在指定位置放注文 |
hold |
保持当前图形 |
legend |
鼠标放置图例 |
refresh |
重新绘制当前图形窗口 |
set |
指定对象的属性,如轴 |
subplot |
在子窗口中创建图 |
text |
在图上做标记 |
bar |
创建条形图 |
loglog |
创建双对数图 |
polar |
创建极坐标图像 |
semilogx |
创建半对数图(对数横坐标) |
semilogy |
创建半对数图(对数纵坐标) |
stairs |
创建阶梯图 |
stem |
创建针状图 |
2.6 续行符
当一行不能写下时,可以使用续行符在下一行继续写。
1 |
|
2.7 设置当前文件夹
1 |
|
注意:必须要先建好文件夹后,才能切换到此文件夹下。
3.数学函数
函数名 | 描述 |
---|---|
rem(m,n) |
取余 |
fix(123/100) |
取整 |
isprime(n) |
判断是否为素数 |
linspace(n,m,g) |
创建g个数,其中n表示开始的数,m表示结束的数 |
3.1 函数的调用
函数名(函数自变量的值)
示例:
1 |
|
3.2 函数的应用
- 三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数,就在函数名后面加上
d
,以示区别。
示例:
1 |
|
abs
函数可以求实数的绝对值、复数的模、字符串的 ASCII 码值。
示例:
1 |
|
- 用去取整的函数:
fix
、floor
、ceil
、round
。
round
:按照四舍五入的规则取整。ceil
:向上取整,取大于等于这个数的第一个整数。floor
:向下取整,取小于等于这个数的第一个整数。fix
:固定取靠近 0 的那个整数,即舍去小数部分。
示例:
1 |
|
4.变量管理
4.1 内存变量文件
save
:创建内存变量文件。
1 |
|
load
:装入内存变量文件。
1 |
|
本文作者: 墨水记忆
本文链接: https://tothefor.com/DragonOne/1468954958.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!