matlab矩阵

1、矩阵的表示

(1)矩阵的建立

      ①利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按照矩阵行的顺序输入个元素,
          同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。
                                              >> a=[1,2,3;4,5,6;7,8,9]
                                              a =
                                                   1     2     3
                                                   4     5     6
                                                   7     8     9
      ②利用已经建好的矩阵建立更大的矩阵:一个大矩阵可以由已经建立好的小矩阵拼接而成。
                                              >> a=[1,2;3,4];
                                              >> b=[5,6;7,8];
                                              >> c=[a,b;b,a]
                                         c =
                                              1     2     5     6
                                              3     4     7     8
                                              5     6     1     2
                                              7     8     3     4
      ③可以用实部矩阵和虚部矩阵构成复数矩阵。
                                              >> a=[1,2;3,4];
                                              >> b=[5,6;7,8];
                                              >> c=a+i*b    //对应相加
                             c =
                                1.0000 + 5.0000i   2.0000 + 6.0000i
                                3.0000 + 7.0000i   4.0000 + 8.0000i

      ④行向量(行矩阵)的生成
          (i)使用冒号表达式:
             格式:      v1:v2:v3      其中v1为初始值,v2为步长,v3为终止值(步长可以省略,默认为1)
                                                     >> a=0:2:10
                                         a =
                                              0     2     4     6     8    10
          (ii)linspace函数:
             格式:      linspace(a,b,n)    其中a为第一个元素,b为最后一个元素,n为元素总数(当n省略时自动生成100个元素)
                                                     >> x=linspace(1,2,5)
                                                     x =
                                                         1.0000    1.2500    1.5000    1.7500    2.0000  //跨度相同

(2)结构矩阵和单元矩阵

      ①结构矩阵
          格式:    结构矩阵元素.成员名=表达式

a(1).x1=10;a(1).x2=‘wang’;a(1).x3=[1,2;3,4];
a(2).x1=11;a(2).x2=‘liu’;a(2).x3=[12,22;32,42];
a(3).x1=12;a(3).x2=‘han’;a(3).x3=[13,23;33,43];
a
a =
包含以下字段的 1×3 struct 数组:
x1
x2
x3

  ------------------------------------------------------------------------------------------------------------------

a(1) >> a(2) >> a(3)
ans = ans = ans =
包含以下字段的 struct: 包含以下字段的 struct: 包含以下字段的 struct:
x1: 10 x1: 11 x1: 12
x2: ‘wang’ x2: ‘liu’ x2: ‘han’
x3: [2×2 double] x3: [2×2 double] x3: [2×2 double]


a(1).x3 >> a(2).x3 >> a(3).x3
ans = ans = ans =
1 2 12 22 13 23
3 4 32 42 33 43


      ②单元矩阵
          建立单元矩阵和一般矩阵相似,直接输入即可,但是元素要用大括号括起来。
          >> a={10,'wang',[11,21;15,25];11,'liu',[55,56;65,66];12,'han',[114,115;125,126]}
          a =
            3×3 cell 数组
              {[10]}    {'wang'}    {2×2 double}
              {[11]}    {'liu' }    {2×2 double}
              {[12]}    {'han' }    {2×2 double}

2、矩阵元素的引用和操作

(1)引用方式:
       ①通过下标来引用矩阵元素
           格式为:   矩阵名(第几行,第几列)
           >> a=[1,2,3,4;11,12,13,14;21,22,23,24;31,32,33,34]
           a =
                1     2     3     4
               11    12    13    14
               21    22    23    24
               31    32    33    34
           >> a(2,3)  //第二行第三列的元素
           ans =
               13
           >> a(2,4)=114;  //修改第二行第四列的元素
           >> a
           a =
                1     2     3     4
               11    12    13   114
               21    22    23    24
               31    32    33    34
         注意:如果给定下标超过原有矩阵范围,会自动用0补齐,且引用下标的值赋值为所给值,如下:(矩阵接着上一个)
           >> a(5,5)=15
           a =
                1      2      3      4       0
               11    12    13   114     0
               21    22    23    24      0
               31    32    33    34      0
                0      0      0      0      15
       ②通过序号来引用
           (i)在MATLAB中,矩阵元素按列存储,即首先存储第一列元素,然后存储第二列元素,知道最后一列元素。
              矩阵元素的序号就是矩阵元素在内存中的排列顺序。(矩阵用上面扩展过的新矩阵)
                                         >> a(7)                 >> a(11)                    >> a(17)
                                         ans =                       ans =                       ans =
                                             12                              3                             114 
              序号与下标是一一对应的,以m x n矩阵A为例,元素A(i,j)的序号为(j-1) x m+i。
           (ii)矩阵元素的序号与下标可以利用sub2ind()函数和ind2sub函数实现相互转换。
               sub2ind()函数:将矩阵中指定元素的行、列下标转换成存储的序号。调用格式为:
               D=sub2ind(S,I,J)
               其中S为行数和列数组成的向量,I为转换矩阵元素的行下标,J为转换矩阵元素的列下标,
               如果I和J是矩阵的话,表示要将矩阵中的多个元素的行列下标转化成存储序号,I,J的行列数必须相同。
               D也为矩阵,存储对应元素的序号,且行列数与I,J相同,一一对应

                                                                           >> a=[1:3;4:6] //创建一个两行三列的矩阵
                                                                           a =
                                                                                1     2     3
                                                                                4     5     6

                           参数S通过size()函数得到            >> size(a)       //size(矩阵名)返回值为一个行向量,第一个元素为行数
                                                                           ans =                                                                      第二个元素为列数
                                                                                2     3

                                                                           >> D=sub2ind(size(a),[1,2;2,2],[1,1;3,2])
                                                                           D =
                                                                                1     2                  //(1,1)   (2,1)
                                                                                6     4                  //(2,3)   (2,2)

               ind2sub()函数:将矩阵元素的序号转换成对应的下标,其格式为:
               [I,J]=ind2sub(S,D)
               其中I为行坐标,J为列坐标,S为行数和列数组成的向量,D为序号
               若D为行向量,则I和J也为行向量,且列数相同

                                   >> [I,J]=ind2sub([3,3],[1,3,5])
                                   I =
                                        1     3     2
                                   J =
                                        1     1     2

       ③利用冒号表达式获得子矩阵
           子矩阵是由矩阵中的一部分元素构成的矩阵
           格式:矩阵名(上边界行数:下边界行数,左边界列数:右边界列数)
          特例:A(i,:)      第i行的全部元素
                    A(:,j)      第j列的全部元素
                    A(i:k,:)   第i~k行的所有元素  等

                  >> a=[1:5;6:10;11:15;16:20;21:25]
                  a =
                       1      2      3      4      5
                       6      7      8      9     10
                      11    12    13    14    15
                      16    17    18    19    20
                      21    22    23    24    25
                  >> a(2:4,2:4)
                  ans =
                       7     8     9                      
                      12    13    14
                      17    18    19

                 end运算符:表示某一维度的末尾元素下标(仍使用上一个矩阵)
                  >> a(2,2:end)  //第二行第二个元素到最后一个元素
                  ans =
                       7     8     9    10

(2)利用空矩阵来删除矩阵中的元素
        空矩阵是指没有任何元素的矩阵
          >> x=[]
           x =
               []

           >> a=[1:4;5:8]
           a =
                1     2     3     4
                5     6     7     8
           >> a(:,[2,4])=[]  //注意此处是删除第二和第四列元素
           a =
                1     3
                5     7

(3)改变矩阵的形状
        reshape(A,m,n):在矩阵总元素数量保持不变的前提下,将矩阵A重新排列为m x n的二维矩阵。
        注意:reshape()函数只是改变行数和列数,并没有改变矩阵元素个数和存储顺序。

                                  >> A=[1:4;5:8]
                                  A =
                                       1     2     3     4
                                       5     6     7     8
                                  >> B=reshape(A,4,2)
                                  B =
                                       1     3
                                       5     7
                                       2     4                                      
                                       6     8

(4)A(:)将矩阵A的每一列元素堆叠起来,成为一个列向量。等价于reshape(A,m*n,1),A为m x n矩阵

           >> A=[1:3;4:6]
           A =
                1     2     3
                4     5     6
           >> A(:)
           ans =
                1
                4
                2
                5
                3
                6

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值