zoukankan      html  css  js  c++  java
  • matlab 矩阵

    假设矩阵A=[1 3;4 2]

    1.对角置零: A-diag(diag(A))

    2.求A的特征值以及特征向量: 用到eig(A)函数,此函数有五种用法,如下:

       2.1 E=eig(A):求矩阵A的全部特征值,构成向量E。

      E= 3.4641

        -3.4641

       2.2 [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量

      v =  0.6547 -0.6547

         0.7559 0.7559

      d =   3.4641   0

         0         -3.4641

       2.3 [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。

       2.4  E=eig(A,B):由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E

       2.5 [V,D]=eig(A,B):由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向量构成N×N阶满秩矩阵,且满足AV=BVD。

    3.matlab 的排序函数sort

      3.1 sort(A)   功能:返回对向量A中的元素按列升序排列的新向量。也就是按从小到大排序。

      3.2 [Y, I] = sort(A, dim, mode) 功能:对矩阵A的各列或各行重新排序,I记录Y中的元素在排序前A中位置,其中dim指明读A的列还是行进行排序。若dim=1,则按列排序;若dim=2,则按行排序。mode为排序的方式,取值'ascend'为升序,'descend'为降序。

     a=[1 2 3;3 9 6;4 10 8 ; 4 0 7]  
    
    a =
    
         1     2     3
         3     9     6
         4    10     8
         4     0     7
    
    >> [Y, I] = sort(a, 1, 'ascend') 
    
    Y =
    
         1     0     3
         3     2     6
         4     9     7
         4    10     8
    
    
    I =
    
         1     4     1
         2     1     2
         3     2     4
         4     3     3
    View Code

    4.matlab的cumsum函数 matlab中cumsum函数通常用于计算一个数组各行的累加值。

       a=[1 2 3;3 9 6;4 10 8 ; 4 0 7]  

        cumsum(a)

          ans =

            1 2 3
            4 11 9
            8 21 17
            12 21 24

    5.求矩阵的最大的前k个特征值程序

    A=[1 3 7;3 8 9;5 4 6];
    [V,D]=eig(A);
    D=diag(D);
    [ D,I]=sort(D,'descend');

    V(:,I(1:2))就是前2个最大的特征值

    6.矩阵的size函数

    (1)s=size(A),

             当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时矩阵的行数,第二个元素是矩阵的列数。
    (2)[r,c]=size(A),

             当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。

    7.max/min函数:min 和max用法类似, 我就不写了

    (1)max(a)

    如果a是一个矩阵,比如a=[1,2,3;4,5,6],max(a)的意思就是找出矩阵每列的最大值,

    本例中:max(a)=[4,5,6]

    (2)max(a,b)

    如果a和b都是大于1维的矩阵,那么要求a和b的行列的维数都要相等,函数的结果是比较a和b中每个元素的大小,比如:

    a=[1,2,3;4,5,6]      b=[4,5,6;7,8,3]

    max(a,b)=[4,5,6;7,8,6]

    另外,如果a和b中至少有一个是常数,也是可以的。比如:

          a=[1,2,3;4,5,6]         b=3        c=5

          max(a,b)=[3,3,3;4,5,6]  相信大家看了例子都明白了函数的意思了吧

          max(b,c)=5

    (3)max(a,[],dim)

    这个函数的意思是针对于2维矩阵的,dim是英文字母dimension的缩写,意思是维数。

    当dim=1时,比较的a矩阵的行,也就是和max(a)的效果是一样的;当dim2时,比较的是a矩阵的行。下面举个例子:

    a=[1,2,3;4,5,6]       max(a)=max(a,[],1)=[4,5,6]    比较的第一行和第二行的值

                       max(a,[],2)=[3,6]

    (4)[C,I]=max(a)

    C表示的是矩阵a每列的最大值,I表示的是每个最大值对应的下标:

    下面举例说明:

    还是刚才那个例子:a=[1,2,3;4,5,6]          [C,I]=max(a)

    结果显示的是C=[4,5,6]       I=[2,2,2]   返回的是最大值对应的行号。

    (5)[C,I]=max(a,[],dim)

    同理:如果dim=1时,其结果和[c,i]=max(a)是一样的。

    当dim=2时,同样上面的矩阵a,我们运行一下:

    [c,i]=max(a,[],2)     结果是:c=[3,6]   i=[3,3]    i返回的是矩阵a的列号。

    8.find函数:

    找到非零元素的索引和值 

    语法:

    8.1.  ind = find(X)

    8.2.  ind = find(X, k)

    8.3.  ind = find(X, k, 'first')

    8.4.  ind = find(X, k, 'last')

    8.5.  [row,col] = find(X, ...)

    8.6.  [row,col,v] = find(X, ...) 

    说明:

    1.  ind = find(X)   

    找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回到向量ind中。

    如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。

    如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。 

    2.  ind = find(X, k) 或 3.  ind = find(X, k, 'first')

    返回第一个非零元素k的索引值。

    k必须是一个正数,但是它可以是任何数字数值类型。 

    4.  ind = find(X, k, 'last')

    返回最后一个非零元素k的索引值。 

    5.  [row,col] = find(X, ...)

    返回矩阵X中非零元素的行和列的索引值。

    这个语法对于处理稀疏矩阵尤其有用。

    如果X是一个N(N>2)维矩阵,col包括列的线性索引。

    例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。

     6.  [row,col,v] = find(X, ...)

    返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。

    如果X是一个逻辑表示,则v是一个逻辑矩阵。

    输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。

    9.dist函数

    dist(A,B)计算A中每个行向量与B中每个列向量之间欧氏距离,A的行向量维数必须等于B的列向量维数。

  • 相关阅读:
    Android源码服务专家(申明:来源于网络)
    Android超精准计步器开发-Dylan计步(申明:来源于网路)
    eclipse中一个项目引用另一个项目的方法(申明:来源于网络)
    javaweb(二十九)——EL表达式
    javaweb学习总结(二十八)——JSTL标签库之核心标签
    javaweb(二十六)——jsp简单标签标签库开发(二)
    javaweb(二十四)——jsp传统标签开发
    javaweb(二十三)——jsp自定义标签开发入门
    javaweb(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
    javaweb(二十一)——JavaWeb的两种开发模式
  • 原文地址:https://www.cnblogs.com/tina-smile/p/3590461.html
Copyright © 2011-2022 走看看