Matlab学习笔记(二)
一、矩阵:
1、矩阵:
1)建立矩阵:
①直接建立:
>> A=[1 2 3;4 5 6;7 8 9]
A =1 2 34 5 67 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 -34 5 6 -4 -5 -67 8 9 -7 -8 -9-1 -2 -3 1 2 3-4 -5 -6 4 5 6-7 -8 -9 7 8 9
③运算处理:
>> A=[1 2;3 4];
>> B=[2 1; 4 3];
>> C=B+i*A
C =2.0000 + 1.0000i 1.0000 + 2.0000i4.0000 + 3.0000i 3.0000 + 4.0000i
2、建立行向量
1)、冒号表达式:
格式:(步长可以省略)e1 : e2 : e3初始值 步 长 终止值
>> t=0:5 //与t=0:1:5
t =0 1 2 3 4 5
>> t=0:2:5
t =0 2 4
2)、linspace函数:
linspace ( a ,b , n )起始元素 终止元素 元素总数(省略时自动产生100个元素)
>> x=linspace(0,10,10)
x =0 1.1111 2.2222 3.3333 4.4444 5.5556 6.6667 7.7778 8.8889 10.0000
3、结构矩阵
结构矩阵元素.成员名=表达式
>> a(1).x1=10;a(1).x2='liu';a(1).x3=[11 21;34 78]
a = 包含以下字段的 struct:x1: 10x2: 'liu'x3: [2×2 double]
4、单元矩阵
单元矩阵中的 元素就是各个不同类型的数据,每个元素就是不同类型元素构成(类型已经定义好)
>> b={10,'liu',[11 21;34 78];12,'xiu',[11 21;34 78]}
b =2×3 cell 数组{[10]} {'liu'} {2×2 double}{[12]} {'xiu'} {2×2 double}
二、使用矩阵
1、引用方式:
1)、通过下标引用:
在matlab中超出矩阵边界外不会造成越界,matlab将自动补充元素,并将其他未赋值的元素补为0。
>> A=[1 2 3;4 5 6];
>> A(4,5)=10A =1 2 3 0 04 5 6 0 00 0 0 0 00 0 0 0 10
2)、通过序号引用:
元素查找:matlab中矩阵存放按照列来(即竖着编号),因此矩阵序号与下标使一一对应的。
假设矩阵A为m*n,则矩阵元素(i,j)的序号为(j-1)*m+i
>> A=[1 2 3;4 5 6];
>> A(3)
ans =2
>> A
A =1 2 34 5 6
元组转换:sub2ind和ind2sub函数sub2ind函数:将矩阵中指定元素的行、列下标转换成储存的序号。调用格式为:D = sub2ind(S,I,J) D:序号S:行数和列数组成的向量I:转换矩阵元素的行下标J:转换矩阵元素的列下标ind2sub函数:把矩阵元素的序号转换成对应的下标。调用格式:[I,J]=ind2sub(S,D)[I,J]: 矩阵坐标S:行数和列数组成的向量D: 序号
# sub2ind:
>> A=[3 7 9;1 4 7];
>> D=sub2ind(size(A),[1,2;2,2],[1,1;3,2])
D =1 26 4# ind2sub:
>> [I,J]=ind2sub([3,3],[1,3,5])
I =1 3 2
J =1 1 2
3)、利用冒号表达式获得子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵。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:5;6:10;11:15]
A =1 2 3 4 56 7 8 9 1011 12 13 14 15
>> A(1:2,:)
ans =1 2 3 4 56 7 8 9 10
>> A(2:3,1:2:5)
ans =6 8 1011 13 15
end运算符:表示某一维的末尾元素下标
>> A=[1:5;6:10;11:15;16:20]
A =1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20
>> A(end,:)
ans =16 17 18 19 20
>> A([1,4],3:end) //第一行和第四行从第三列开始到最后一列
ans =3 4 518 19 20
2、删除矩阵元素
直接置为空矩阵:
空矩阵中没有元素
>> A=[1:5;6:10;11:15;16:20]
A =1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20
>> A(:,[2,4])=[] //第二列和第四列的元素删除
A =1 3 56 8 1011 13 1516 18 20
3、改变矩阵形状
reshape函数:只改变原矩阵的行数和列数,但不改变原矩阵的元素个数及其储存顺序reshape(A,m,n)
等价转换形式:A(:): 将矩阵的每个元素转化为列向量
>> A=[1:5;6:10;11:15;16:20]
A =1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 20
>> B=reshape(A,5,4)
B =1 7 13 196 12 18 511 17 4 1016 3 9 152 8 14 20