matlab-note-1
matlab-note-1
MATLAB基础知识
MATLAB系统环境
- matlab为GUI界面,相关操作均在matlab command中进行。
- 可以用…进行命令行输入的转行继续连接,以运行较长的命令行命令。
MATLAB数值数据,变量及其操作
整型
MATLAB提供了数据类型转换函数来实现数据类型的转化,默认格式为short:
1 | %% 数据类型转化 |
浮点型
- single函数:将其他类型的数据转换为单精度型。
- double函数:将其他类型的数据转换为双精度型。
MATLAB中数值默认是双精度型,可以使用single函数转化为单精度型。
1 | %浮点型 |
复型
real函数:求复数的实部
imag函数:求复数的虚部
format命令
format命令(只影响数据的输出格式,而不影响数据的计算和储存):
1 | format long |
常用数学函数
三角函数有以弧度为单位的函数和以角度为单位的函数,如果是以角度为单位的函数就在函数名后面加“d”,以示区别。例如sin(x)和sind(x)
1 | %% 常用数学函数: |
变量及其操作
变量本质上是内存单元的一个抽象。
MATLAB的标准函数名何命令名必须用小写字母。
预定义变量是由系统本身定义的变量,ans是默认的赋值变量。
在MATLAB中i和j表示虚数单位,pi表示圆周率,NaN表示非数。
可以使用who和whos指令获得目前的变量名清单。
用于保存MATLAB工作区变量的文件叫做内存变量文件,其扩展名为.mat,也叫MAT文件。(生成过程:先使用save命令创建内存变量文件,再使用load命令装入内存变量文件)。
1
2 save mydata a x
load mydata
MATLAB矩阵表示及矩阵元素的引用
矩阵的建立
(1). 利用直接输入法建立矩阵:将矩阵元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的个元素之间用逗号或空格分开,不同行之间用分号分隔。
(2). 利用已经建立好的矩阵建立更大的矩阵。
1 | %% matlab矩阵表示 |
可以用实部矩阵和虚部矩阵构成复数矩阵
1
2
3
4 %复数矩阵
B = [1, 2, 3; 4, 5, 6]; %语句加分号后则只进行计算而不进行表示
C = [6, 7, 8; 9, 10, 11];
A = B + i * C
冒号表达式
冒号表达式(初始值:步长[可省略,若省略则默认为1]:终止值)
1 | t = 0:1:5 |
结构矩阵和单元矩阵
(1).结构矩阵
由结构数据构成的矩阵就是结构矩阵,结构矩阵里的每个元素就是结构数据类型。
格式:结构矩阵元素.成员名=表达式
1 | %结构矩阵 |
数组索引必须为正整数或逻辑值。
(2).单元矩阵
建立单元矩阵与建立一般矩阵类似,只是单元矩阵用{}形成。
1 | %单元矩阵 |
访问元素
1 | a=b(1,3) |
矩阵元素的引用
- 通过下标来引用矩阵的元素,赋值时可以大于行数或列数,矩阵会自动扩展。(这条实际测试似乎不成立?)
- 通过序号来引用。
1 | %矩阵元素的引用 |
矩阵元素的序号与下标可以通过sub2ind和ind2sub函数实现互相转换:
sub2ind函数:将矩阵中指定元素的行、列下标转换为存储的序号。调用格式为:
$D=sub2ind(S,I,J)$
D:序号;
S:行数和列数组成的向量;
I:转换矩阵元素的行下标;
J:转换矩阵元素的列下标。
1 | A = [1:3; 4:6] |
ind2sub函数:将矩阵元素的序号转换为对应的下标。调用格式为:
$[I,J]=ind2sub(S,D)$
D:序号;
S:行数和列数组成的向量;
I:转换矩阵元素的行下标;
J:转换矩阵元素的列下标。
1 | [I, J] = ind2sub([3, 3], [1, 3, 5]) |
利用冒号表达式获得子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵。
表达式 | 含义 |
---|---|
A(i,:) | 第i行的全部元素 |
A(:,j) | 第j列的全部元素 |
A(i:i+m,k:k+m) | 第i~i+m行内且在第k~k+m列中的所有元素 |
A(i:i+m,:) | 第i~i+m行的全部元素 |
end运算符:表示某一维末尾元素的下标。
1 | A = [1, 2, 3, 4, 5; 6, 7, 8, 9, 10; 11, 12, 13, 14, 15; 16, 17, 18, 19, 20] |
利用空矩阵删除矩阵的元素
空矩阵是指没有任何元素的矩阵。
删除某个矩阵的元素实际就是将该矩阵置空。
1 | A = [1, 2, 3, 0, 0; 7, 0, 9, 2, 6; 1, 4, -1, 1, 8] |
改变矩阵的形状
reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成$m*n$的二维矩阵。(注意:reshape函数只是改变原矩阵的行数和列数,但并不改变原矩阵的元素个数及其存储顺序)
1 | x = [23, 45, 65, 34, 65, 34, 98, 45, 78, 65, 43, 76]; |
A(😃:将矩阵A的每一列元素堆叠起来,成为一个列向量。
1 | A = [-45, 65, 71; 27, 35, 91] |
MATLAB基本运算
算术运算
基本算术运算
注意细节:
- MATLAB的算术运算是在矩阵意义下进行的,单个数据的算术运算只是矩阵运算的一种特例。
- 基本算术运算符包括:+,-,*,/(右除),\(左除),^(乘方)
- 对于左除和右除而言,若A矩阵是非奇异矩阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B
1 | A = [1, 2, 3; 4, 2, 6; 7, 4, 9]; |
加减运算:
- 若两矩阵同型,则运算时两矩阵的相应元素相加减。
- 若两矩阵不同型,则MATLAB将给出错误信息。
- 一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。
乘法运算:
- 矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。
- 如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。
除法运算:
- 在MATLAB中,有两种矩阵除法运算:右除/和左除\。如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),A\B等效于inv(A)*B。
点运算
点运算符: $.*$、$./$、.\和.^四种。
两个矩阵的点运算是指它们对应元素进行相关运算,要求两个矩阵同型。
1 | A = [1, 2, 3; 4, 5, 6; 7, 8, 9]; |
关系运算
<,<=,>,>=,==,~=六种,注意不等于(~=)的写法即可。
当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
- 当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
- 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
逻辑运算
&,|,~三种。
- 若参与逻辑运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
- 若参与逻辑运算的一个是标量,一个是矩阵,那么将在标量与矩阵中的每个元素之间按标量规则逐个进行运算,最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成。
在算术运算、关系运算和逻辑运算中,算术运算的优先级最高,逻辑运算的优先级最低,但逻辑非运算是单目运算,它的优先级比双目运算要高。
MATLAB中字符串处理
字符串的表示
在MATLAB中,字符串是指用单引号括起来的字符序列。
若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。
1 | xm = 'Beihang University' |
MATLAB中可以建立多行字符串,形成字符串矩阵。
1 | ch = ['abcdef'; '123456']; |
字符串的操作
字符串的执行
1 | t = pi; |
简而言之,eval函数相当于在命令行中输入命令
字符串与数值之间的转换
abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。
char函数可以将ASCII码矩阵转化为字符串矩阵。
1 | s1 = 'MATLAB'; |
字符串的比较
字符串比较又两种方法:利用关系运算符或字符串比较函数。
- strcmp(s1,s2):用来比较字符串s1和s2是否相等,如果相等,返回结果为1,否则返回0。
- strncmp(s1,s2,n):用来比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
- strcmpi(s1,s2):在忽略字母大小写前提下,比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。
- strncmpi(s1,s2,n):在忽略字符串大小写前提下,比较两个字符串前n个字符是否相等,如果相等,返回1,否则返回0。
1 | 'www0' >= 'W123' |
字符串的查找与替换
findstr(s1,s2):返回短字符串在长字符串中的开始位置。
strrep(s1,s2,s3):将字符串s1中的所有子字符串s2替换为字符串s3。
1 | p = findstr('This is a test', 'is') |
- Title: matlab-note-1
- Author: Charles
- Created at : 2023-02-03 12:57:52
- Updated at : 2023-08-21 19:47:59
- Link: https://charles2530.github.io/2023/02/03/matlab-note-1/
- License: This work is licensed under CC BY-NC-SA 4.0.