MATLAB 的基本数据单位是矩阵,它的指令表达与数学工程中常用的习惯形式十分相似,除了直接用[ ]来输入数组输入矩阵外,还可以借助函数来生成矩阵。
ones( ) 创建一个所有元素都为 1 的矩阵,其中可以制定维数,1,2….个变量
zeros() 创建一个所有元素都为 0 的矩阵,但是类型仍未double型
初始化一个逻辑类型的矩阵:A = true(5,5)或者A = false(5,5)
eye() 创建对角元素为 1,其他元素为 0 的矩阵
diag() 根据向量创建对角矩阵,即以向量的元素为对角元素
magic() 创建魔方矩阵
rand() 创建随机矩阵,服从均匀分布
randn() 创建随机矩阵,服从正态分布
randperm() 创建随机行向量
horcat C=[A,B],水平聚合矩阵,还可以用 cat(1,A,B)
vercat C=[A;B],垂直聚合矩阵, 还可以用 cat(2,A,B)
repmat(M,v,h) 将矩阵 M 在垂直方向上聚合 v 次,在水平方向上聚合 h 次
blkdiag(A,B) 以 A,和 B 为块创建块对角矩阵
- Matlab数组的下标是从“1”开始的,这点与C语言不同;
- MATLAB规定矩阵元素在存储器中的存放次序是按列的先后顺序存放,即存完第1列后,再存第2列,依次类推。例如,有一个3×4阶的矩阵B,若要把它存储在计算机中,其存放次序就如表2-13所示。C语言就是按行的先后顺序来存放数组元素的,即存完第1行后,再存第2行,依次类推。因此对应的访问顺序B(3)即访问到B(3,1) B(10)访问到B(1,4)。
- 与C语言不同,matlab矩阵、数组不用事先定义大小,可以动态增加
>> m=1
m = 1
>> m(1,2)=2
m =
1 2
>> m(2,1)=3
m =
1 2
3 0
- matlab矩阵、数组可以动态改变形状 reshape
>> A=-4:4
A =
-4 -3 -2 -1 0 1 2 3 4
>> A=reshape(A,3,3)
A =
-4 -1 2
-3 0 3
-2 1 4
- 数组转置、上下对称交换和旋转操作后果的对照比较
A =
-4 -1 2
-3 0 3
-2 1 4
>> A‘
//转置矩阵ans =
-4 -3 -2
-1 0 1
2 3 4
>> A‘==A.‘
//另一种转置,只有复数时两种转置不一致ans =
//因此得到的逻辑矩阵为全真1 1 1
1 1 1
1 1 1
>> flipud(A)//
上下翻转ans =
-2 1 4
-3 0 3
-4 -1 2
>> fliplr(A)
//左右翻转ans =
2 -1 -4
3 0 -3
4 1 -2
>> rot90(A)
//逆时针旋转90度ans =
2 3 4
-1 0 1
-4 -3 -2
- 矩阵复制法拓展
>> A=reshape(1:9,3,3)
A =
1 4 7
2 5 8
3 6 9
>> A(4,4)=1111
A =
1 4 7 0
2 5 8 0
3 6 9 0
0 0 0 1111
>> A(:,6)=2222
A =
1 4 7 0 0 2222
2 5 8 0 0 2222
3 6 9 0 0 2222
0 0 0 1111 0 2222
- d
- d
- s
- s
- s
- sSD
- S
- S
- S
- S
- S
- S
- S
- S