matlab學習筆記之基礎知識(一)

Slash Ace發表於2016-07-07

一、兩種特殊資料型別

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 = A\B

>> 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 = A\B;
>> 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

 

 未完待續。。。

 

相關文章