创建⽆⼤⼩的空矩阵_Matlab⼊门教程第1章Matlab基础知识之
矩阵的使⽤
1.4 Matlab 矩阵的表⽰
1.4.1 矩阵的建⽴
⽅法⼀:直接输⼊法建⽴矩阵——将矩阵的元素⽤中括号括起来,按矩阵⾏的顺序输⼊各元素,同⼀⾏的各元素之间⽤逗号或空格分隔,不同⾏的元素之间⽤分号分隔。
>> A = [1,2,3;4,5,6;7,8,9]
A =
1 2 3
4 5 6
7 8 9
⽅法⼆:利⽤已经建好的矩阵建⽴更⼤的矩阵:⼀个⼤矩阵可以由已经建⽴好的⼩矩阵拼接⽽成。
>> A = [1,2,3;4,5,6;7,8,9];
>> B = [-1,-2,-3;-4,-5,-6;-7,-8,-9];
>> C = [A,B;B,A]
C =
1 2 3 -1 -2 -3
4 5 6 -4 -5 -6
7 8 9 -7 -8 -9
-1 -2 -3 1 2 3
-4 -5 -6 4 5 6
-7 -8 -9 7 8 9
⽅法三:⽤实部矩阵和虚部矩阵构成复数矩阵。
>> B = [1,2,3;4,5,6];
>> C = [6,7,8;9,10,11];
>> A = B + i*C
A =
1.0000 + 6.0000i
2.0000 + 7.0000i
3.0000 + 8.0000i
4.0000 + 9.0000i
5.0000 +10.0000i
6.0000 +11.0000i
1.4.2 冒号表达式
格式:e1:e2:e3,其中 e1 为初始值,e2 为步长,e3 为终⽌值。
举例:
>> t = 0:1:5
t =
0 1 2 3 4 5
注意点:省略步长 e2,则步长为 1。例如,t=0:5 与 t=0:1:5 等价。
还可以通过 linspace 函数产⽣⾏向量,调⽤格式为:linspace(a,b,n)。其中,a 为第⼀个元素,b 是⽣成向量的最后⼀个元素,n 是元素总数。「当 n 省略时,⾃动产⽣ 100 个元素。」
>> x = linspace(0,pi,6)
x =
0 0.6283 1.2566 1.8850 2.5133 3.1416
1.4.3 结构矩阵和单元矩阵
①结构矩阵
格式为:结构矩阵元素.成员名=表达式
举例:建⽴含有 3 个元素的矩阵 a,每个元素都有结构数据,包含 3 个成员,但是不同数据类型,「给每个元素的每个成员赋值」
>> a(1).x1 = 10;a(1).x2 = 'liu';a(1).x3 = [11,21;34,78];
>> a(2).x1 = 12;a(2).x2 = 'wu';a(2).x3 = [34,191;27,578];
>> a(3).x1 = 14;a(3).x2 = 'cai';a(3).x3 = [13,890;67,231];
结构矩阵数据
②单元矩阵
建⽴单元矩阵和⼀般矩阵相似,直接输⼊就可以了,只是单元矩阵元素⽤⼤括号括起来。
>> b = {10,'liu',[11,21,34,78];12,'wu',[34,191,27,578];14,'cai',[13,890,67,231]}
b =
3×3 cell 数组
{[10]} {'liu'} {1×4 double}
{[12]} {'wu' } {1×4 double}
{[14]} {'cai'} {1×4 double}
1.5 矩阵元素的引⽤
1.5.1 矩阵元素的引⽤⽅式
⽅法⼀:通过下标来引⽤矩阵的元素
A(3,2)表⽰ A 矩阵第 3 ⾏第 2 列的元素。
>> A = [1,2,3;4,5,6]; % 直接输⼊法创建矩阵 A
>> A(4,5) = 10 % 将 10 赋值给 A(4,5)
A =
1 2 3 0 0
4 5 6 0 0
0 0 0 0 0
0 0 0 0 10
⽅法⼆:通过序号来引⽤
在 Matlab 中,矩阵元素按列存储,即⾸先存储矩阵的第⼀列元素,然后存储第⼆列元素,...,⼀直到矩阵的最后⼀列元素。
矩阵元素的序号就是矩阵元素在内存中的排列顺序。
>> A = [1,2,3;4,5,6]
A =
1 2 3
4 5 6
>> A(3)
ans =
2
「序号与下标是⼀⼀对应的,以 m✖ n 矩阵 A 为例,矩阵元素 A(i,j) 的序号为 (j-1)✖ m+i」。
矩阵元素的序号与下标可以利⽤ sub2ind 和 ind2sub 函数实现相互转换。
「sub2ind 函数」:将矩阵中指定元素的⾏、列下标转换成存储的序号。调⽤格式为:D=sub2ind(S,I,J)其中,S 是⾏数和列数组成的向量,I 是转换矩阵元素的⾏下标,J 是转换矩阵元素的列下标。
>> A = [1:3;4:6]
A =
1 2 3
4 5 6
>> D = sub2ind(size(A),[1,2;2,2],[1,1;3,2])
D =
1 2
6 4
「ind2sub 函数」:将把矩阵元素的序号转换成对应的下标,其调⽤格式为:[I,J]=ind2sub(S,D),其中,S 是⾏数和列数组成的向量,D 是序号,I 是⾏下标,J 是列下标。
>> [I,J] = ind2sub([3,3],[1,3,5])
I =
1 3 2
J =
1 1 2
1.5.2 利⽤冒号表达式获得⼦矩阵
⼦矩阵是指由矩阵中的⼀部分元素构成的矩阵。
冒号表达式释义
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 ⾏第全部元素
举例:
>> A = [1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]
A =
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
>> A(1:2,:)
ans =
1 2 3 4 5
6 7 8 9 10
>> A(2:3,1:2:5)
ans =
6 8 10
11 13 15
1.5.3 利⽤ end 运算符获得⼦矩阵
「end 运算符」:表⽰某⼀维的末尾元素下标。
举例:
>> A = [1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];
>> A(end,:) % 最后⼀⾏矩阵元素
ans =
16 17 18 19 20
>> A([1,4],3:end) % 从第⼀⾏到第四⾏,获取第三列到最后的元素
ans =
3 4 5
18 19 20
1.5.4 利⽤空矩阵删除矩阵的元素
「空矩阵」:⽆元素的矩阵
>> x = []
x =
[]
A(:,[2,4]) = []是将 2~4 列元素置空,即删除
linspace函数调用的格式为1.5.5 改变矩阵的形状
reshape(A,m,n):在矩阵 A 总元素保持不变的前提下,将 A 重新排成 m✖ n 的⼆维矩阵。
注意点:reshape 函数只是改变原矩阵的⾏数和列数,但并不改变原矩阵元素个数及其存储顺序。
>> x = [23,45,65,34,65,34,98,45,78,65,43,76];
>> y = reshape(x,3,4)
y =
23 34 98 65
45 65 45 43
65 34 78 76
A(:):将矩阵 A 的每⼀列元素堆叠起来,成为⼀个列向量。
「A(:) 等价于 reshape(A,6,1)」
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论