• matlab学习笔记之基础知识(一)


    一、两种特殊数据类型

    1.元胞数组  

    元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。

    创建方式:

    1)直接赋值

    >> a={'matlab',20;ones(2,3),1:10}                                        
    
    a = 
    
        'matlab'        [         20]
        [2x3 double]    [1x10 double]

    2)通过cell函数创建

    >> b = cell(2,2);
     b{1,1} = 'matlab';
     b{1,2} = 20;
     b{2,1} = ones(2,3);
     b{2,2} = 1:10;
    >> b
    
    b = 
    
        'matlab'        [         20]
        [2x3 double]    [1x10 double]

    2.结构体

    结构体是matlab中另一个能够存储不同类型数据的数据类型,它与元胞数组的区别在于结构体是以指针的方式来传递数据,而元胞数组是通过值传递

    创建方式:

    1)直接赋值

    >> A.b1 = 111;
    
    >> A.b2 = ones(3);
    
    >> A.b3 = 'Matlab 2013a';
    
    >> A
    
     
    
    A =
    
     
    
        b1: 111
    
        b2: [3x3 double]
    
        b3: 'Matlab 2013a'

    2)通过struct函数创建

    结构体变量名 =  struct(属性名1, 属性值1, 属性名2, 属性值2,…)

    >> B = struct('b1',222,'b2',ones(3),'b3','hello');
    
    >> B
    
     
    
    B =
    
     
    
        b1: 222
    
        b2: [3x3 double]
    
        b3: 'hello'

    二、matlab常用运算

    已知线性方程组 Ax = B

    1.方程的解

    (1)       求逆运算    x = inv(A) * B

    (2)       左除运算    x = AB

    >> A = [6,3,4;-2,5,7;8,-1,-3];
    >> B = [3;-4;-7];
    >> x = inv(A)*B;
    >> x
    x =
    
        1.0200
    
      -14.0000
    
        9.7200
    
    >> y = AB;
    >> y
    y =
    
        1.0200
    
      -14.0000
    
        9.7200

    2.矩阵的秩

    R = rank(A)

    >> r = rank(A);
    >> r
    r =
    
         3

    3.矩阵的特征值与特征向量

    [v, lambda] = eig(A)

    >> [v, lambda] = eig(A)
    
    v =
    
        0.8013   -0.1094   -0.1606
    
        0.3638   -0.6564    0.8669
    
        0.4749    0.7464   -0.4719
    
    
    lambda =
    
        9.7326         0         0
    
             0   -3.2928         0
    
             0         0    1.5602

    4.矩阵的乘幂与开方

    >> A1 = A ^2;                     %乘幂
    
    >> A2 = sqrt(A);                 %开方
    
    >> A1
    
     
    
    A1 =
    
     
    
        62    29    33
    
        34    12     6
    
        26    22    34
    
     
    
    >> A2
    
     
    
    A2 =
    
     
    
       2.4495 + 0.0000i   1.7321 + 0.0000i   2.0000 + 0.0000i
    
       0.0000 + 1.4142i   2.2361 + 0.0000i   2.6458 + 0.0000i
    
       2.8284 + 0.0000i   0.0000 + 1.0000i   0.0000 + 1.7321i

    5.矩阵的指数与对数

    >> y1 = exp(A);          %指数
    
    >> y2 = log(A);           %对数
    
    >> y1
    
     
    
    y1 =
    
     
    
       1.0e+03 *
    
     
    
        0.4034    0.0201    0.0546
    
        0.0001    0.1484    1.0966
    
        2.9810    0.0004    0.0000
    
     
    
    >> y2
    
     
    
    y2 =
    
     
    
       1.7918 + 0.0000i   1.0986 + 0.0000i   1.3863 + 0.0000i
    
       0.6931 + 3.1416i   1.6094 + 0.0000i   1.9459 + 0.0000i
    
       2.0794 + 0.0000i   0.0000 + 3.1416i   1.0986 + 3.1416i

    6.矩阵的提取与翻转

    提取:

    上三角(右上):y1 = triu(A)

    下三角(左下):y2 = tril(A)

    对角线:y3 = diag(A)

    翻转:

    上下翻转:y4 = filpud(A)

    左右翻转:y5 = filplr(A)

    沿列翻转:y6 = flipdim(A,1)

    沿行翻转:y7 = filpdim(A,2)

    逆时针旋转翻转:y8 = rot90(A)

    >> A_triu = triu(A)
    
     
    
    A_triu =
    
     
    
         6     3     4
    
         0     5     7
    
         0     0    -3
    
    >> A_tril = tril(A)
    
     
    
    A_tril =
    
     
    
         6     0     0
    
        -2     5     0
    
         8    -1    -3
    
     
    
    >> A_diag = diag(A)
    
     
    
    A_diag =
    
     
    
         6
    
         5
    
        -3
    
     
    
    >> A_ud = flipud(A)
    
     
    
    A_ud =
    
     
    
         8    -1    -3
    
        -2     5     7
    
         6     3     4
    
     
    
    >> A_lr = fliplr(A)
    
     
    
    A_lr =
    
     
    
         4     3     6
    
         7     5    -2
    
        -3    -1     8
    
     
    
    >> A_l = flipdim(A,1)
    
     
    
    A_l =
    
     
    
         8    -1    -3
    
        -2     5     7
    
         6     3     4
    
     
    
    >> A_h = flipdim(A,2)
    
     
    
    A_h =
    
     
    
         4     3     6
    
         7     5    -2
    
        -3    -1     8
    
     
    
    >> A_r90 = rot90(A)
    
     
    
    A_r90 =
    
     
    
         4     7    -3
    
         3     5    -1
    
         6    -2     8

    7.“商”及“余”多项式

    [q, r] = deconv(p1, p2),p1为输入分子多项式系数,p2为输入分母多项式系数,q为输出多项式的“商”,r为输出多项式的“余”。

    求多项式的“商”和“余”。

    >> p1 = conv([1,0,1],conv([1,3],[1,1]))
    
     
    
    p1 =
    
     
    
         1     4     4     4     3
    
     
    
    >> p2 = [1,2,1]
    
     
    
    p2 =
    
     
    
         1     2     1
    
     
    
    >> [q,r] = deconv(p1,p2)
    
     
    
    q =
    
     
    
         1     2    -1
    
     
    
     
    
    r =
    
     
    
         0     0     0     4     4

     未完待续。。。

    学到即赚到。
  • 相关阅读:
    《剑指offer》第十二题(矩阵中的路径)
    《剑指offer》第十五题(二进制中1的个数)
    《剑指offer》第十题(斐波那契数列)
    《剑指offer》第十一题(旋转数组的最小数字)
    原始的生成对抗网络GAN
    《剑指offer》第九题(用两个栈实现队列)
    (转)c++一些知识点
    贪心算法
    动态规划——最长公共子串
    动态规划——主元素算法
  • 原文地址:https://www.cnblogs.com/always-chang/p/matlab.html
Copyright © 2020-2023  润新知