标签:number 列排序 tran 部分 matlab 存在 res 4.0 down
××××××××××××××××××××××××××数组与矩阵
××××××××××××××××××××××××××
得到关于数组与矩阵的信息:
isempty()    :        为空,即为[]
isscalar()   :        为标量,即为单一的一个数字
isvector()   :        为向量,即为数组或者矩阵
isrow()      :        为行向量
iscolumn()   :        为列向量
issparse()   :        为稀疏矩阵
size()       :        返回数组或者矩阵的行列大小 , 返回为 [ rowline_number , columnline_number ]
length()     :        返回数组或者矩阵中行或者列中长度最大的一个
ndims()      :        返回数组或者矩阵的维度
使用命令who 可以查看有哪些变量
使用命令whos 可以查看变量的存储状态
创立数组与矩阵:
A_matrix = [ 1:3 ; 2:4 ; 3:5 ]
********    显示结果   ********
a =                            
    1     2     3
    2     3     4
    3     4     5
*******************************
其中 1:3 称为分片,默认步长为1 , 由 1 递增加步长 1 直到 3 为止 。
那么 1 : 2 : 9 所得即为 [ 1 3 5 7 9 ] ,步长为 2 , 增长到 9 。 (当然步长可以为负数)
矩阵的运算:
普通的运算符号也可以直接用于矩阵与数组之间 , 例如 + - * / \  
其中 / 为左除 , \ 为右除 。    A_matrix / B_matrix 等同于 B_matrix \ A_matrix
但运算符号 ^ 与 .^ 存在区别:
    A_matrix ^ 2 等同于 A_matrix * A_matrix
    A_matrix .^2 等同于 矩阵中的每一个元素改为自身的平方 。
    ******************************************************
    >> a.^2
    ans =
    1     4     9
    4     9    16
    9    16    25
    *******************************************************
矩阵的转置,求逆与点乘:
转置:  使用符号 ‘ 或者 .‘ 或者使用函数 transpose(matrix)
        A 为矩阵 , 那么A的转置即为      A‘        A.‘      transpose(A)
        但 ‘ 并非为真正的转置,因为当矩阵成员中存在虚数时,转置后的结果中虚数会变为
    原虚数的共轭虚数,例如:
    *******************************************************************
    >> a = [ 1+1j 2 ; 2+3j 5 ]
    a =
       1.0000 + 1.0000i   2.0000 + 0.0000i
       2.0000 + 3.0000i   5.0000 + 0.0000i
    >> a‘
    ans =
       1.0000 - 1.0000i   2.0000 - 3.0000i
       2.0000 + 0.0000i   5.0000 + 0.0000i
    >> a.‘
    ans =
       1.0000 + 1.0000i   2.0000 + 3.0000i
       2.0000 + 0.0000i   5.0000 + 0.0000i
    *********************************************************************
求逆:  直接使用inv函数,inv(matrix)即可得到相应矩阵的逆矩阵
点乘:  使用函数dot( A_matrix , B_matrix ) 完成矩阵A与矩阵B的点乘
修改数组与矩阵的部分值:
**********************************************************************************************
    >> A = [ 11    10     9    34   837 ]     %   建立数组 A
A =
        11    10     9    34   837
>> C = ( A < 33 )                         %    查找符合要求的元素,返回为逻辑类型
C =
    1     1     1     0     0
>> whos 
Name      Size            Bytes  Class      Attributes
A         1x5                40  double               
C         1x5                 5  logical         
>> A(C) = 32                              %     通过数组C修改相应的符合 < 33 条件的元素的值
A =
    32    32    32    34   837     
**********************************************************************************************
当然也可以通过find函数来进行相同的操作
    A( find( A < 33 ) ) = 32  %   只是对于find函数而言,返回的数据是符合要求的元素的index索引号
矩阵的翻转与排序操作:
对于排序而言,可以使用sort函数进行排序   sort( X , DIM , MODE )
        X: 为数组或者矩阵  DIM: dimension维度   mode:‘ascend‘正序 ‘descend‘ 反序
        默认对列排序,维度为 1 , 模式为‘ascend‘正序
***********************************************************
>> a = [ 3:5 ; 1:3 ; 4:6 ]
a =
     3     4     5
     1     2     3
     4     5     6
>> sort(a)
ans =
     1     2     3
     3     4     5
     4     5     6
***********************************************************
对于数组与矩阵的翻转可以使用的函数有
rot90( matrix , k )           矩阵逆时钟旋转 k*90 度  [ rotate 90 degree ]
fliplr(A)                     矩阵左右旋转  [ flip left , flip right ]
flipud(A)                     矩阵上下旋转  [ flip up   , flip down  ]
**************************************************************
>> a = [ 1:9 ; 2:10 ]
a =
     1     2     3     4     5     6     7     8     9
     2     3     4     5     6     7     8     9    10
>> flipud(a)
ans =
     2     3     4     5     6     7     8     9    10
     1     2     3     4     5     6     7     8     9
>> a      %   调用函数并没有改变 矩阵 a 
a =
     1     2     3     4     5     6     7     8     9
     2     3     4     5     6     7     8     9    10
>> fliplr(a)
ans =
     9     8     7     6     5     4     3     2     1
    10     9     8     7     6     5     4     3     2
a =
     1     2     3     4     5     6     7     8     9
     2     3     4     5     6     7     8     9    10
>> rot90(a,1)     
ans =
     9    10
     8     9
     7     8
     6     7
     5     6
     4     5
     3     4
     2     3
     1     2
**************************************************************
对矩阵的求和操作:
(1)  使用函数sum函数对矩阵求和
    sum( A_matrix , Dim ) Dim :维度默认为 1 , 即默认为列求和
    对一个矩阵使用sum两次即得到矩阵每个元素的和
    ****************************************************
    >> a
    a =
       1.0000 + 1.0000i   2.0000 + 0.0000i
       2.0000 + 3.0000i   5.0000 + 0.0000i
    >> sum(a)      
    ans =
       3.0000 + 4.0000i   7.0000 + 0.0000i
    >> sum(a,2)
    ans =
       3.0000 + 1.0000i
       7.0000 + 3.0000i
    >> sum(sum(a))
    ans =
      10.0000 + 4.0000i
    *****************************************************
(2) 使用累加函数cumsum , 对矩阵进行累加 
    cumsum(A,DIM)   DIM 默认为 1 , 对列进行操作
    若 matrix A 为 [ 
            a1 a2 a3 ; 
            b1 b2 b3 ; 
            c1 c2 c3 
               ] 
    那么对A使用cumsum函数后,结果为 
               [ 
            a1       a2       a3    ; 
            a1+b1    a2+b2    a3+b3 ; 
            a1+b1+c1 a2+b2+c2 a3+b3+c3 
               ]
    *****************************************************
    >> a
    a =
       1.0000 + 1.0000i   2.0000 + 0.0000i
       2.0000 + 3.0000i   5.0000 + 0.0000i
       0.0000 + 5.0000i   6.0000 + 8.0000i
    >> cumsum(a)
    ans =
       1.0000 + 1.0000i   2.0000 + 0.0000i   
       3.0000 + 4.0000i   7.0000 + 0.0000i
       3.0000 + 9.0000i  13.0000 + 8.0000i
    *****************************************************
通过原矩阵构造新的矩阵:
(1) 以已有的矩阵为基本元素来构造新的矩阵,使用repmat函数:
**************************************************************
>> a = [ 1:3 ; 2:4 ]
a =
     1     2     3
     2     3     4
>> repmat(a,2,3)        
%     以矩阵 a 为基本的元素构造矩阵
%     [ a a a ; a a a ]
ans =
     1     2     3     1     2     3     1     2     3
     2     3     4     2     3     4     2     3     4
     1     2     3     1     2     3     1     2     3
     2     3     4     2     3     4     2     3     4  
**************************************************************
(2) 以已有矩阵作为对角块建立新的矩阵,使用blkdiag函数:
**************************************************************
>> blkdiag(a,a)
ans =
     1     2     3     0     0     0
     2     3     4     0     0     0
     0     0     0     1     2     3
     0     0     0     2     3     4
>> blkdiag(a,a,a)
ans =
     1     2     3     0     0     0     0     0     0
     2     3     4     0     0     0     0     0     0
     0     0     0     1     2     3     0     0     0
     0     0     0     2     3     4     0     0     0
     0     0     0     0     0     0     1     2     3
     0     0     0     0     0     0     2     3     4
**************************************************************
(3) 矩阵形状修改,使用函数reshape,但是原矩阵的元素个数不变:
**************************************************************
>> size(a)
ans =
     2     3
>> a
a =
     1     2     3
     2     3     4
>> reshape(a,3,2)
ans =
     1     3
     2     3
     2     4
**************************************************************标签:number 列排序 tran 部分 matlab 存在 res 4.0 down
原文地址:http://blog.51cto.com/13824643/2156456