一、创建矩阵
1、通过直接赋值创建矩阵
将矩阵元素置于[]中。同行元素之间用空格或“。”分开。行与行之间用“;”隔开。
>> a=[1,2,3;4,5,6;,7,8,9]a = 1 2 3 4 5 6 7 8 9
2、通过特殊的函数进行创建
函数名称 | 函数功能 |
---|---|
ones(n) | 构建一个n*n的1矩阵 |
ones(m,n…p) | 构建一个m*n*…*p的1矩阵 |
ones(size(A)) | 构建一个和矩阵A相同大小的1矩阵 |
zeros(n) | 构建一个n*n的0矩阵 |
zeros(m,n…p) | 构建一个m*n*…*p的0矩阵 |
zeros(size(A)) | 构建一个和矩阵A相同大小的0矩阵 |
eye(n) | 构建一个n*n的单位矩阵 |
eye(m*n) | 构建一个m*n的单位矩阵 |
eye(size(A)) | 构建一个和矩阵A相同大小的单位矩阵 |
rand(n) | 构建一个n*n矩阵,其元素在0~1之间均匀分布 |
rand(m,n…p) | 构建一个m*n*…*p的矩阵,其元素在0~1之间均匀分布 |
triu(A) | 构建一个和A大小相同的上三角矩阵,主对角线上的元素为A中对应元素,其余为0 |
tril(A) | 构建一个和A大小相同的下三角矩阵,主对角线上的元素为A中对应元素,其余为0 |
>> A=[1,2,3;4,5,6;7,8,9]A = 1 2 3 4 5 6 7 8 9>> tril(A)ans = 1 0 0 4 5 0 7 8 9
二、改变矩阵结构
Matlab提供了一些函数来实现矩阵的变换。
函数名称 | 函数功能 |
---|---|
fliplr | 矩阵每一行均进行逆序排序 |
flipud | 矩阵每一行均进行升序排序 |
rot90(A) | 矩阵A逆时针旋转90而得到新的矩阵 |
rot90(A,k) | 矩阵A逆时针旋转k*90而得到新的矩阵 |
repmat(x,[m,n,,,p]) | 创建一个m*n*…*p维的矩阵,全部的元素均为x |
sort(A) | 对矩阵A升序排序并返回排序后的矩阵。当A为二维矩阵时。分别对每一列进行排序 |
sort(A,dim) | 对矩阵A升序排序并返回排序后的矩阵。当dim为1时,分别对每一列进行排序;当dim为2时,对每一行进行排序 |
sort(A,dim,mode) | mode为‘ascend’时,进行升序排序;mode为descend时为降序排序 |
>> A=[1,2,3;-1,1,0;4,5,6]A = 1 2 3 -1 1 0 4 5 6>> sort(A)ans = -1 1 0 1 2 3 4 5 6
三、矩阵下标
矩阵的索引分为双下标索引和单下标索引两种。
- 双下标索引与java中的数组索引是一个意思。A(2,3)就是表示第二行第三列的元素。
- 单下标索引是按列来计数的元素的位置,比如A是一个3*4的矩阵,那么A(7)就表示矩阵A中第一行第三列的元素。由于7=2*3+1。前两列加上第三列的第一个元素。
以下是一些矩阵下标操作的函数。
函数名称 | 函数功能 |
---|---|
A(:,j) | 返回二维矩阵中第j列列向量 |
A(i,:) | 返回二维矩阵中第i行行向量 |
A(:,j:k) | 返回二维矩阵A中第j列到第k列列向量组成的子阵 |
A(i:k,:) | 返回二维矩阵A中第i行到第k行行向量组成的子阵 |
A(:) | 将矩阵中的每一列合并成一个长的列向量 |
四、矩阵信息
1、获取矩阵的元素个数
>> AA = 1 2 3 -1 1 0 4 5 6>> numel(A)ans = 9
2、获取矩阵各维度的长度
>> size(A)ans = 3 3
3、获取矩阵维数
>> ndims(A)ans = 2