基本矩阵操作(一)

矩阵和数组的概念和区别

  1. 矩阵:矩阵式数学上的概念,最早来自于方程组的系数及常数所构成的方针。作为一种变换或者映射算符的体现,矩阵运算有着明确而严格的数学规则。
  2. 数组:计算机程序设计领域的概念。在matlab中其存在目的是为了使数据管理方便,操作简单,命令形式自然,执行计算有效。
  3. 在matlab中,矩阵是以数组的形式存在的,一维数组相当于向量,二维数组相当于矩阵,所以矩阵式数组的子集。

矩阵的构造

  1. 直接赋值法构造简单矩阵

    简单矩阵采用矩阵构造符号——方括号[],同行的元素之间用,或者空格间隔,行与行之间用分号;

    例如:

    >> A=[1 2 3;4 5 6;7 8 9]
    
    A =
    
         1     2     3
         4     5     6
         7     8     9
    
    >> B=[1,2,3;4,5,6;7,8,9]
    
    B =
    
         1     2     3
         4     5     6
         7     8     9
    
    >> 
    
  2. 特殊矩阵

    特殊矩阵的构造一般都是用matlab特定的函数来实现。

    函数名称函数功能
    ones(n)构建一个n x n的1矩阵(矩阵的元素全部是1)
    ones(m,n,… p)构建一个m x n…p的1矩阵
    ones( size(A))构建一个和矩阵A同样大小的1矩阵
    zeros(n)构建一个n x n的0矩阵(输出矩阵的元素全部是0)
    zeros(m, n,…, p)构建一个m x n x…x p的0矩阵
    zeros(size(A))构建一个和矩阵A同样大小的0矩阵
    eye(n)构建一个n x n的单位矩阵
    eye(m, n)构建一个m x n的单位矩阵
    eye( size(A))构建一个和矩阵A同样大小的单位矩阵
    magic(n)构建一个n x n的矩阵,其每一行、每一列的元素之和都相等
    rand(n)构建一个n x n的矩阵,其元素为0-1之间均匀分布的随机数
    rand(m,n,… p)构建一个m x n x…p的矩阵,其元素为0-1之间均匀分布的随机数
    randn (n)构建一个n x n的矩阵,其元素为零均值、单位方差的正态分布随机数
    randn (m, n,. p)构建一个m x n x…p的矩阵,其元素为零均值、单位方差的正态分布随机数
    diag(c2)构建一个n维的方阵,它的主对角线元素值取自向量x,其余元素的值都为0
    diag(A, k)构建一个由矩阵A第k条对角线的元素组成的列向量k=0为主对角线; k<0为下第k条对角线; k>0为上第k条对角线
    diag(x, k)构建一个(n+|k|) x (n+|k|)维的矩阵,该矩阵的第k条对角线元素取自向量x,其余元素都为0(关于参数k,参考上个命令)
    triu(A)构建一个和A大小相同的上三角矩阵,该矩阵的主对角线上元素为A中相应元素,其余元素都为0
    triu(A, k)构建一个和A大小相同的上三角矩阵,该矩阵的第k条对角线及其以上元素为A中相应元素,其余元素都为0
    tril (A)构建一个和A大小相同的下三角矩阵,该矩阵的主对角线上元素为A中相应元素,其余元素都为0
    tril(A, k)构建一个和A大小相同的下三角矩阵,该矩阵的第k条对角线上及其以下元素为A中相应元素,其余元素都为0

    样例:

    >> magic(5)
    
    ans =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9
    
    >> 
    
  3. 向量、标量和空矩阵

    向量:单行或单列的矩阵称为向量。

    标量:1 x 1的矩阵称为标量,矩阵只有一个元素

    空矩阵:行和列数至少有一个为0的矩阵。

    • 空矩阵的表示:

      x=[]
      

    空矩阵和0矩阵的区别:空矩阵内没有任何元素不占用存储空间。而0矩阵表示该矩阵中所有的元素全部为0,需要存储空间。

矩阵大小及结构的改变

矩阵大小及结构的改变一般也是由函数来实现。

函数名称函数功能
fliplr(A)矩阵每一行均进行逆序排列
flipud(A)矩阵每一列均进行逆序排列
flipdim(A, dim)生成一个在dim维矩阵A内的元素交换位置的多维矩阵
rot90(A)生成一个由矩阵A逆时针旋转90度而得到的新矩阵
ro190(A,k)生成一个由矩阵A逆时针旋转k×90.而得到的新矩阵
reshape(A, m, n)生成一个m x n x p维的矩阵,其元素以线性索引的顺序从矩阵A中取得如果矩阵A中没有mXnx.p个元素,将返回一个错误信息
repmat(A. [m n…p])创建一个和矩阵A有相同元素的mXnx.Xp块的多维矩阵
shiftdim(A, n)矩阵的列移动n步。n为正数,矩阵向左移; n为负数,矩阵向右移
squeeze(A)返回没有空维的矩阵A
cat(dim,A, B)将矩阵A和B组合成一个dim维的多维矩阵
permute(A, order)根据向量order来改变矩阵A中的维数顺序
ipermute(A, order)进行命令permute的逆变换
sort(A)对一维或二维矩阵进行升序排序,并返回排序后的矩阵;当A为二维矩阵时,对矩阵的每一列分别进行排序
sort(A, dim)对矩阵按指定的方向进行升序排序,并返回排序后的矩阵.当dim=1时,对矩阵的每一列排序dim=2时,对矩阵的每一行排序
sort(A, dim, mode)mode为’ascend’时,进行升序排序; mode为’descend’时,进行降序排序
[B, LX]=sort(A,…)LX为排序后备元素在原矩阵中的行位置或列位置的索引

矩阵下标引用

  在matlab中二维数组的数字索引分为双下标索引和单下标索引。双下标比较简单就类似于坐标的形式,而单下表索引需要注意。但下表索引的方式式采用列优先的方式对矩阵元素进行编号。如下图中4x4矩阵的编号:

15913
261014
371115
481216
  1. 矩阵下标访问单个矩阵元素

    常用的矩阵索引表达式:

    索引表达式函数功能
    A(1)将二维矩阵A重组为一维数组,返回数组中第一个元素
    A(:,j)返回二维矩阵A中第j列列向量
    A(i,:)返回二维矩阵A中第i行行向量
    A(:,j:k)返回由二维矩阵A中的第j列到第k列列向量组成的子矩阵
    A(i:k,:)返回由二维矩阵A中的第i行到第k行行向量组成的子矩阵
    A(i:k,j:l)返回由二维矩阵A中的第i行到第k行行向量和第j列到第l列列向量的交集组成的子矩阵
    A(: )将矩阵A中的每列合并成一个长的列向量
    A(j:k)返回一个行向量,其元素为A(:)中的第j个元素到第k个元素
    A([j1 j2 …])返回一个行向量,其元素为A(:)中的第j1、j2元素
    A(:,[j1 j2 …])返回矩阵A的第j1列、第j2列等的列向量
    A([i1 i2 …],: )返回矩阵A的第i1行、第i2行等的行向量
    A([i1 i2 …],[j1 j2 …])返回矩阵第1行、第2行等和第j列、第2列等的元素
  2. 线性引用元素

    • 双下标索引转化为单下标索引

      IND=sub2ind(siz,i,j)
      

      其中siz是包含两个元素的数组,代表了矩阵的行数和列数,一般可以直接用size(A)表示,i与j分别是双索引下标元素的行数和列数,IND是转换后的单索引下标值。

    • 单索引下标转化为双索引下标

      [I J]=ind2sub(siz,ind)
      

      变量意义同上。

  3. 访问多个矩阵元素

    sum(A(1:4,4))							%求第4列前四个元素的和
    sum(A(:,4))								%求第4列所有元素的和
    sum(A(:,end))							%求矩阵最后一列元素的和
    B=A(1:3:10)								%
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就很好(*^_^*)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值