0.1 基本知识
-
普通脚本( .m ) : 一种为脚本文件,另一种为函数文件。 其计算的结果会显示在MATLAB的命令行窗口中。
-
实时脚本( .mlx ) : 交互式文档,可以写代码,说明性的文本,插入图片和公式。在执行代码时,返回的结果可以和代码一起显示和保存。兼容markdown,可以插入latex。
变量
与常规的程序语言(例如C语言、Java)不同的是,MATLAB并不要求事先对所使用的变量进行声明,也不需要指定变量的类型,MATLAB会自动根据所赋予变量的值或对变量所进行的操作来识别变量的类型。
查询变量或函数顺序为 :工作区-文件-搜索路径
ctrl+i 自动整理代码
ans 系统默认的用于保存运算结果的变量名
pi 圆周率π
inf/-inf 无穷大和负无穷大,注意1/0=inf
NaN 不定值或缺失值。例如计算O/0或0*Inf会返回NaN
eps 浮点相对精度。计算机内部使用二进制01对浮点数进行编码,如果小数点后面位数过长,计算机就无法准确表示。
可简单的将eps看成一个非常小的数,这个数大约等于$2.22*10^{-16}$,有时候不想分母为0时,我们就可 以在分母上加上eps
分节
连续两个百分号后面加一个空格可以把脚本分节
使用Ctrl+↑或Ctrl+↓可以在不同的小节切换
使用Ctrl+Enter可以只运行当前小节的代码
命令行窗口
点击键盘的“上箭头”,出现输入过的历史命令
使用clc命令可以清空命令行窗口:
使用clear命令可以清空工作区。
clear sins(从工作区删除sins变量)
代码行后加上英文分号“;” , 计算结果不会出现在命令行
更改MATLAB的数值的显示格式
有两种方案:
(1)临时更改:format命令。
在运行代码前,在命令行窗口输入format long g, 将MATLAB的显示设为长格式。
它和format long的效果有细微区别。如果返回的数值非常的小或者非常的大,设置成format long g后,得到的结果仍然会使用科学计数法表示。
注意,显示格式只影响数值的显示方式,不会影响它们在MATLAB中的存储方式和计算精度。关于MATLAB支持的数值显示的格式,大家可以使用doc format命令自行查阅帮助文档。
1 向量
1.1 向量创建方法
(1)直接输入
若元素之间用空格、逗号分隔,则创建的是行向量; 若用分号、回车键分隔,则创建的是列向量。
a=[1 2 3] ; b=[1,2,3];c=[1;2;3]
(2)冒号法
利用命令:A:step:B来创建一个行向量。默认step=1,简写成A:B 其中,A是起始值,step是每次递增或递减的步长,B是终止值(不一定刚好停在这里)。
(3)函数创建
linspace(a,b,n) : 等差数列
创建一个行向量,第一个元素为a,最后一个元素为b,形成总数为n个元素的线性间隔的向量。(不指定n,则默认n=100。)
linspace(a,b,n)和冒号法a:step:b生成向量的区别:
(1)linspace不需要指定步长,根据n自动计算;而使用冒号法可以指定步长。
(2)linspace生成的向量的最后一个元素一定是b,而使用冒号法A:step:B生成的向量的最后元素不一定是b。
logspace(a,b,n) : 等比数列
创建一个行向量,其第一个元素为$10^a$,最后一个元素为$10^b$,形成总数为n个元素的等比数列向量。
1.2 向量元素引用
索引就是指某一个元素在向量中对应的位置,也可以称为元素在向量中所处的下标,在MATLAB中,向量的索引是从1开始的。数组索引必须为正整数或逻辑值。
a(ind)命令:ind即对应元素索引
(1)单个元素引用
a(1)
(2)多个元素引用 : 将ind设置成一个向量
- 令 ind =[1 35 79] ; a ( ind )
- a ( [1 35 79] )
- a(5:end)
1.3 向量元素修改、删除
- a(1)=1
-
a(1)=[ ]
- a ( [1,3] )=[0,0]
- a(2:3)=[0,0]
- a(2:3)=[ ]
2 矩阵
2.1 矩阵创建
(1)直接输入法
a=[1 2 3;4 5 6]
(2)函数创建法
全为0的矩阵: zeros(m,n)
全为1的矩阵: ones
单位矩阵: eye
均匀分布的随机数 : rand(m,n)
创建区间0和1内均匀分布的随机数,m行n列
均匀分布的随机整数 : randi( [imin,imax],m,n ) imin为1,则可略去
标准正态分布的随机数 : randn(m,n)
diag(v,k) 函数可用来创建对角矩阵或者获取矩阵的对角元素 (v:向量;k:对角线,0主对角线,k>0位于主对角线上方,k<0位于主对角线下方。)
- 如果输入的第一个参数是向量,则表示创建对角矩阵。
- 如果输入的第一个参数是矩阵,则表示获取矩阵的对角元素。返回对角线上元素的构成的列向量。
(3)导入本地文件中的数据
MATLAB可读取本地的文件,支持的常见格式如下:
.txt、.dat或.csv(适用于带分隔符的文本文件)
.xls、.xlsb、.xlsm、.xlsx、.xltm、.xltx或。ods(适用于电子表格文件)
2.2 矩阵元素引用
(1) a(row_ind, column_ind) (双下标索引)
如果row_ind和column_ind都是一个常数,则表示提取矩阵中的单个元素;
如果row_ind或column_ind是包含有多个元素的向量,则表示同时提取多个位置的元素。
A(1, 1:end)简写A(1,:)表示矩阵A的第1行的所有元素; A(1:end, 1)简写A(:,1)表示矩阵A的第1列的所有元素。
(2)线性索引(单下标索引)
在MATLAB中,矩阵的数据在计算机的内存中被存储为单列,由矩阵的各列顺次连接而成。
A(5)
A(2: 7)
A(1: 2: end)
A(:)命令可以将 A中的所有元素按照线性索引的顺序重构成一个列向量。
2.3 矩阵元素修改、删除
将等号右侧变成空向量[ ],则可以删除对应位置的元素。需要注意的是,通常只能删除矩阵的整行或者整列,否则会报错。
如果在赋值时将一个或多个元素置于矩阵现有的行和列索引的边界之外,则会将矩阵的大小进行拓展,MATLAB会将没有赋值的位置的元素自动用0填充,使其保持为完整 的矩形。
也可以通过线性索引来删除矩阵的元素。使用线性索引删除后,MATLAB会将矩阵中剩下的元素按照线性索引的顺序放入到一个向量中。另外,使用线性索引可以删除任意位 置的元素,不需要删除矩阵的一整行或者一整列。
2.4 矩阵拼接、重复
cat(catenate连接)函数
cat(dim,A,B)表示沿着维度dim方向将矩阵B拼接到矩阵A的末尾。
dim=1: 沿着行方向从上往下进行拼接,即纵向拼接;
dim=2: 沿着列方向从左自右进行拼接,即横向拼接。
-
横向拼接要求矩阵的行数相同: [A B] [A,B] horzcat(A,B)
-
纵向拼接要求矩阵的列数相同: [A {Enter} B] [A;B] vertcat(A,B)
repmat(A,m,n)
repelem(v,n)
3 矩阵相关运算
调用函数运算
算术运算
关系运算
逻辑运算
集合运算
4 程序流程控制
4.1 条件语句
if 表达式1
语句1
elseif 表达式2
语句2
elseif 表达式3
语句3
else
语句4
end
switch 开关表达式
case 表达式1
语句1
case 表达式 2
语句2
case 表达式 n
语句n
otherwise
语句n+1
end
工作区变量
工作区包含 MATLAB中创建 或 从数据文件或其他程序导入的变量。
-
使用
whos查看工作区的内容。 -
使用
clear命令,清除工作区中的所有变量。 -
退出 MATLAB 后,工作区变量不会保留。 使用
save命令保存数据以供将来使用
save myfile.mat
-
通过保存,系统会使用
.mat扩展名将工作区保存在当前工作文件夹中一个名为 MAT 文件的压缩文件中。 -
使用
load将 MAT 文件中的数据还原到工作区。
load myfile.mat
文本格式化