一、兩種特殊資料型別
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
未完待續。。。