MATLAB的各种数据类型,在MATLAB中均以矩阵的形式存在(标量、向量都是特殊的矩阵),矩阵是MATLAB最基本的数据对象。
1.建立一个矩阵
1. 1直接输入法
在命令窗口直接输入矩阵元素。按行输入矩阵元素,同一行元素使用空格或者逗号隔开,不同行元素使用分号或者回车作为间隔。
>> A=[1 2 3 4];
>> B=[2,3,4,5];
>> C=[1,2,3,4;2,3,4,5];
>> A,B,C
A =
1 2 3 4
B =
2 3 4 5
C =
1 2 3 4
2 3 4 5
1. 2M文件建立矩阵
启动编辑器(输入edit命令,或者使用按钮),输入待建立矩阵,输入格式要求和直接输入法类似,只不过不同行元素必须使用分号作为间隔。
1. 3特殊矩阵的建立
- 零矩阵(command:zeros)
>> B=zeros(5)
B =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
- 幺矩阵(command:ones)
>> A=ones(5,6)
A =
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1. 4冒号表达式建立矩阵
冒号是一个重要的运算符,语法e1:e2:e3,e1为初始值,e2为步长,e3为终止值,产生行向量,以e1为开始,e3为结束,步长为e2。
>> A=[1:1:10]
A =
1 2 3 4 5 6 7 8 9 10
1. 5linspace建立行向量
语法linspace(a, b, n)。a和b分别为行向量的第一个和最后一个元素,n为总元素,省略n自动产生100个元素的行向
2.矩阵的简单操作
2. 1矩阵索引
使用A[行,列]查询(sub)或者使用A(序号)查询(ind),使用序号查询时应注意机器储存矩阵是按列储存的,即第一行第一列的序号是1,第二行第一列的序号是2,第三行第一列的序号是3…
>> A=[1 2 3;4 5 6;7 8 9];
>> A(2,3)
ans =
6
>> A(4)
ans =
2
还能做到找元素所在的位置,可以输出坐标sub或者是序号ind:
>> A=[1 2 3;4 5 6;7 8 9];
>> [m,n]=find(A==7)
m =
3
n =
1
>> ind=find(A==7)
ind =
3
sub和ind之间还可以互相转换:
>> A=[1 2 3;4 5 6;7 8 9];
>> sub2ind(size(A),2,3)
ans =
8
>> [m,n]=ind2sub(size(A),8)
m =
2
n =
3
2. 2重排(command:reshape(A,m,n))
>> A=[1 2 3 4;5 6 7 8];
>> B=reshape(A,4,2)
B =
1 3
5 7
2 4
6 8
2. 3转置
来一个单引号
2. 4拆分(索引的一个特例)
>> A=[1 2 3;4 5 6;7 8 9];
>> B=A(1,:) %得到矩阵A的第一行所有列
B =
1 2 3
>> C=A(1,1:2) %得到矩阵A的第一行第一列到第二列
C =
1 2
>> D=A(2,1:end-1) %得到矩阵A的第二行第一列到倒数第二列
D =
4 5
>> E=A([1,2],[1,2]) %得到矩阵A的第一行到第二行的第一列到第二列(哈哈奇怪的说法)
E =
1 2
4 5
2. 5删除
删除是通过赋空值来实现的。(空值是[])
>> A=[1 2 3;4 5 6;7 8 9];
>> A(1,:)=[]
A =
4 5 6
7 8 9
2. 6扩展(command:repmat(A,m,n))
将A复制,并按照m行n列来搞。
>> A=[1 2 3;4 5 6;7 8 9];
>> B=repmat(A,3,2)
B =
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
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
2. 7压缩(command:unique(A))
这个比较简单,就是去掉重复的元素,我就不多bb了,直接上程序。
>> A=[1 2 2 3 3 3 4 4 4 4];
>> B=unique(A)
B =
1 2 3 4