笔记一是简单介绍MATLAB中关于向量和矩阵的常用生成方式。
目录
1.行向量和列向量的建立
在MATLAB中一般使用方括号,逗号,空格及分号来创建数组。
数组中的同一行的元素之间用逗号或空格分开,不同行之间用分号分开。
A=[1 2 3 4 5]
B=[1,2,3,4,5]
C=[1;2;3;4;5]
2.一维数组元素的访问和赋值
访问方式有三种
A(i)是值数组A中的第i个元素;
A(i:j)是数组A中第i个到第j个元素,中间默认间隔为1;
A(i:s:j)是数组A中从第i个元素,间隔为s,直到最后一个元素的序号和j的差的绝对值小于或等于s的绝对值为止;
A([i j])是数组A中第i个和第j个元素。
A=[1,2,3,4,5]
B=A(3) % 数组的第3个元素
C=A(2:4) % 数组的第2,3,4个元素
D=A(3:end) % 数组的第3个到最后一个元素
E=A(3:-1:1) % 数组的第3,2,1个元素
F=A(end:-1:1) % 数组元素反序输出
G=A([2 4]) % 数组的第2个和第4个元素
H=A(1:2:4) % 从数组的第一个元素开始,间隔为2,到最后第3个元素为止(最后的元素序号为3和j=4相差1小于间隔2)
3.通过冒号建立一维数组
X=n1:step:n2是建立一维数组,第一个元素为n1,间隔为step,直到最后一个元素和n2的差的绝对值小于或等于step的绝对值为止;不指定step时,默认step为1.
A=2:6 % 创建第一个元素为2,间隔为1,最后元素为6的数组
B=2.5:2:10.9 % 创建第一个元素为2.5,间隔为2,最后元素为10.5的数组(最后元素10.5和10.9之差小于间隔2)
C=8:-2:1 % 创建第一个元素为8,间隔为-2,最后一个元素为2的数组(最后的元素2和1之差为1小于间隔的绝对值2)
4.使用linspace函数建立一维数组
X=linspace(n1,n2)是创建第一个元素为n1,最后一个元素为n2,形成总共为100个元素的等差数列,间隔为(n2-n1)/(100-1);
X=linspace(n1,n2,N)是创建第一个第一个元素为n1,最后一个元素为n2,形成总共为N个元素的等差数列,间隔为(n2-n1)/(N-1);
如果N<2,则函数返回值为n2。
A=linspace(1,100) % 创建第一个元素为1,最后一个元素为100的100个元素的等差数列,间隔为(100-1)/(100-1)=1
B=linspace(1,99,50) % 创建第一个元素为1,最后一个元素为99的50个元素的等差数列,间隔为(99-1)/(50-1)=2
C=linspace(2,5,2) % 创建第一个元素为2,最后一个元素为5的2个元素的数组
D=linspace(2,5,1) % 返回元素5
5.通过logspace建立一维数组
此处因为有公式(暂时用图片替代)
A=logspace(1,2) % 创建第一个元素为10,最后一个元素为100,公比为10的1/49次幂,50个元素等比数列
B=logspace(1,2,10) % 创建第一个元素为10,最后一个元素为100,公比为10的1/9次幂,10个元素等比数列
C=logspace(1,2,2) % 创建第一个元素为10,最后一个元素为100,2个元素的数组
D=logspace(1,2,1) % 返回值为100
6.创建二维数组(矩阵)
用方括号将所有元素括起来,不同行的元素用分号分隔,同一行的元素用空格或者逗号分隔。
A=[1 2 3;4 5 6;7 8 9] % 创建3*3的矩阵
B=[1 2;3 4;5 6] % 创建3*2的矩阵
C=[1 2 3;4 5 6] % 创建2*3的矩阵
矩阵的连接
用方括号可以进行矩阵的连接,空格进行矩阵的横向连接,分号进行矩阵的纵向连接。
D=[A B] % 横向连接要保证两个矩阵行数相同
E=[A;C] % 纵向连接要保证两个矩阵列数相同
7.矩阵的四则运算
两个矩阵要进行加减运算,需要保证维数相同。
矩阵的加减运算是对应位置的元素进行加减。
A=[1 2;3 4]
B=[1 1;1 1]
C=A+B
D=A-B
矩阵的乘法规则是线性代数中的乘法规则:
假设A,B,C均为nn矩阵,C=AB,则C中的任一元素
矩阵的点乘是两个矩阵相同位置的元素对应相乘
E=A*B
F=A.*B
矩阵的除法分为左除和右除
G=A./B % 左除,相同位置的A中元素除以B中元素
H=A.\B % 右除,相同位置的B中元素除以A中元素
8.数组的点积
两个数组的点积是两个数组对应位置元素相乘然后再求和
A=[1 2 3 4 5]
B=[2 3 4 5 6]
C=dot(A,B)
9.数组的关系运算
6种关系运算符:小于<、小于等于<=、大于>、大于等于>=、等于==和不等于~=
(1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,则关系表达式结果为1,否则是0。
(2) 当参与比较量是两个维数相同的数组时,比较是对两数组相同位置的元素按标量关系运算规则逐个进行,并给出比较结果。最终的关系运算结果是一个维数与原数组相同的数组,它的元素由0或1组成。
(3) 当参与比较的一个是标量,而另一个是数组时,则把标量与数组的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算结果是一个维数与原数组相同的数组,它的元素由0或1组成。
A=[4 6 5 9 8]
B=[3 6 4 8 7]
C=(A<=7) % A中小于等于7的数,在C中对应位置上为1,其余为0
D=(A>7) % A中大于7的数,在D中对应位置上为1,其余为0
E=(A>B) % 相同位置的A中元素大于B中元素时,则E中对应位置为1,其余为0
F=(A==B) % 相同位置的A中元素等于B中元素时,则F中对应位置为1,其余为0
A(A>7)=10 % A中大于7的数的位置对应的数赋值为10
B(B==8)=100 % B中等于8的数的位置对应的数赋值为100
10. 数组的逻辑运算
数组的逻辑运算包括与&、或|和非~
(1) 在逻辑运算中,非零元素为逻辑真,用1表示;零元素为逻辑假,用0表示;
(2) 若参与逻辑运算的是两个标量a和b,那么a&b,a和b全为非零时,运算结果为1,否则为0;a|b,a和b中只要有一个非零,运算结果为1,否则为0,;~a,当a非零时,运算结果为0,当a为零时,运算结果为1。
(3) 当参与逻辑运算是两个维数相同的数组时,那么对两数组相同位置的元素按标量运算规则逐个进行,最终的运算结果是一个维数与原数组相同的数组,它的元素由0或1组成。
(4) 当参与逻辑运算的一个是标量,而另一个是数组时,则把标量与数组的每一个元素按标量逻辑运算规则逐个比较,最终的运算结果是一个维数与原数组相同的数组,它的元素由0或1组成。
A=[11 1 0 0 2]
B=[2 3 4 0 0]
C=A&B
D=A|B
E=~A
F=A&1
A(A&1)=10
11. 数组信息的获取
size(A):返回矩阵A的行数和列数
length(A):返回一维数组A的长度
A=[1 2 3 4 5]
[m n]=size(A)
d=length(A)
数组元素的查找
在数组中,find函数返回关系表达式为真的元素的下标
A=[1 2 3 4 5]
find(A>2) % 返回A中元素大于2的下标
find(A==3) % 返回A中元素等于3的下标
A(find(A==5))=100 % A中元素等于5的下标对应的数赋值100
排序
sort函数用于升序排序
A=[2 6 4 5 1]
B=sort(A) % A中元素升序排序赋值给B
[C I]=sort(A,'ascend') % C为A中元素升序结果,I为排序后的元素在排序前的下标
D=sort(A,'descend') % A中元素降序结果赋值给D