Matlab学习笔记 Day3
注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。
1.矩阵元素的访问:
(1)向量元素标识,v(i)表示向量v的第i个元素的位置,注意matlab中数组下标从1开始(和C/C++最大不同)
>> x = 1:2:9
x =
1 3 5 7 9
>> x1 = x(3)
x1 =
5
>> x2 = x(end)
x2 =
9
(2)全下标方式
A(i,j)表示矩阵A中位于第i行、第j列的元素。
>> A=[1,2;3,4;5,6];
>> a12=A(1,2)
a12 =
2
>> x=A(1,1)+A(1,2)
x =
3
此时如果输入a33=A(3,3)会提示数组越界。可以用扩大数组再赋值的方法
>> A(2,4)=9;a33=A(3,3)
a33 =
0
此时,矩阵A的值可以在工作窗口看到,它已经从3x2扩大为3x4的矩阵了。
(3)单下标方式
根据矩阵元素在内存中的存储次序(序号)来引用矩阵元素。注意:在MATLAB中矩阵书写按行顺序,但在内存中按列顺序存储。
A(:)表示由A中所有元素按照在内容中存储次序生成的列向量A(1)=1,A(2)=3……,A(6)=6
例:A=[1,2;3,4;5,6]
内存顺序为:1,3,5,2,4,6
对于mxn的矩阵A,A(i,j)对应的单下标为:ind=m*(j-1)+i
2.取子数组
子数组是从数组中取出一部分元素所构成的数组。通常可用全下标、单下标和逻辑下标取子数组。
(1)全下标方式
A(rows,cols) 得到子矩阵,其中rows是行下标组成的向量,cols是列下标组成的向量,如果只取1行(列)则rows(cols)是标量
:出现在行下标位置表示所有行,出现在列下标表示所有列,end出现在行(列)下标的位置表示最大行(列)下标。
(2)单下标方式
A(I)得到A中部分或所有元素组成的向量,其中I是由这些元素的单下标组成的向量,例如:I=[1,2,4]则A(I)是由A(1),A(2),A(4)组成的向量。
例子:
假设A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A(1,:)取首行
A(:,end)取最后一列
A(1:2:4,:)提取第1,3行,同A([1 3],: )
A([3 1],:)提取第3,1行,顺序不同
A([3: -1:1],:)按行顺序翻转矩阵
A([1 3],[2 4])分别取第一行和第三行的第二列和第四列组成矩阵
A(1:6)为行向量
A(:)为列向量
>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12];A(1,:)
ans =
1 2 3 4
>> A(:,end)
ans =
4
8
12
>> A([3:-1:1],:)
ans =
9 10 11 12
5 6 7 8
1 2 3 4
>> A([1 3],[2,4])
ans =
2 4
10 12
>> A(1:6)
ans =
1 5 9 2 6 10
>> A(:)
ans =
1
5
9
2
6
10
3
7
11
4
8
12
3.数组元素的赋值
子数组(数组元素)=标量或数组(包括子数组)
(1)全元素方式
格式:a( : ) = b
给矩阵a的所有元素赋值:
①当b为标量时,将矩阵a的所有元素赋值为b
②当b不是标量时,数组b的元素个数必须等于a的元素个数但行列数可以不相等
(2)子数组方式
格式:A(Indexes) = B
给矩阵A中部分元素赋值:注意下标不能越界
①当b为标量时,将矩阵a的指定元素赋值为b
②当b不是标量时,b的元素个数必须等于a的元素待赋值元素个数但行列数可以不相等
格式:A(Rows,Cols) = B
给矩阵A中部分元素赋值,Rows和Cols均为标量或向量,分别制定待赋值元素所在行和列
①当B为标量时,将矩阵a的指定元素赋值为b
②当B不是标量时,矩阵B行列数必须和左边行列完全一致。
在MATLAB中,可以实现未对向量或矩阵进行定义、初始化或赋值的情况下直接对向量或数组元素赋值。
>> a(1)=1,a(2)=2
a =
1
a =
1 2
>> b(5:6)=[2,3]
b =
0 0 0 0 2 3
>> c([3,4],[5,6,7]) = ones(2,3)
c =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 1 1 1
0 0 0 0 1 1 1
>> d(:,2)=[1:6]
d =
0 1
0 2
0 3
0 4
0 5
0 6
>> e(3,:)=1:6
e =
0 0 0 0 0 0
0 0 0 0 0 0
1 2 3 4 5 6
>> f(1,:)=1
f =
1
DAY3个人体会:补充一个快速清空窗口的快捷表示:在命令窗口输入clc可以快速清空,但不能做到clear。MATLAB对于数组的分片功能非常强大,可以任取元素或赋值。