Matlab矩阵基础

Matlab矩阵基础

一、创建矩阵

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、获取矩阵的元素个数

>> A

A =

     1     2     3
    -1     1     0
     4     5     6

>> numel(A)

ans =

     9

2、获取矩阵各维度的长度

>> size(A)

ans =

     3     3

3、获取矩阵维数

>> ndims(A)

ans =

     2