矩陣高級演算法
⑴ matlab 矩陣演算法
你所說的可能是指MATLAB的向量化運算(Vectorization)吧?
MATLAB顧名思義,本來就是為向量或矩陣運算設計的,所以很多場合,如果能夠使用向量化運算,就應盡量避免使用顯式循環(for和while)。這一點是和普通的高級編程語言如C++、Fortran有顯著差別的。
舉一個簡單的例子:生成一個對數表,如果使用循環
x = .01;
for k = 1:1001
y(k) = log10(x);
x = x + .01;
end
而在MATLAB中可以用這種向量化的代碼:
x = .01:.01:10;
y = log10(x);
二者的差別不僅在於代碼量的大小,效率差別也很大。
這方面也沒什麼特殊的資料,屬於比較基礎的,如果想用好MATLAB,就請多花點時間把基本功練扎實點(事實上很多人並沒做到)。特別提醒一下,很多時候注意使用MATLAB的「點運算操作符」,如.*, ./, .^等。想進一步了解這方面的內容,可以在MATLAB幫助系統里搜索一下Vectorization,有一些相關的主題和例子。
⑵ 簡單介紹一下有關矩陣的演算法
Matrix類的變形方法,最終都是根據用戶給出的參數修改內部矩陣。這些方法的不同之處,在於修改值的演算法,以及修改結果在矩陣中的位置。
當用戶在代碼中調用translate(5,13)時,AS3修改矩陣類的內建矩陣,將其中的(tx,ty)T與(5,13)T相加,由於在矩陣創建時(tx,ty)被初始化為(0,0),所以這個結果就是向量(tx,ty)與(5,13)的和。
⑶ 矩陣乘法公式
|a11 a12 …… a1n||b11 b12 …… b1k|
|a21 a22 …… a2n||b21 b22 …… b2k|=
| . . …… . || . . …… . |
|am1 am2 …… amn||bn1 bn2 …… bnk|
|a11*b11+a12*b21+……+a1n*bn1 a11*b12+a12*b22+……+a1n*bn2
若A、B和C表示三個矩陣並有C=AB,A為n行m列,B為m行q列,則C為n行q列
則對於C矩陣任版一元素Cij都有權
Cij=ai1*b1j+ai2*b2j+ai3*b3j+...+ain*bnj
i=1,2,3,...,n,j=1,2,3,...q
(3)矩陣高級演算法擴展閱讀:
1、當矩陣A的列數(column)等於矩陣B的行數(row)時,A與B可以相乘。
2、矩陣C的行數等於矩陣A的行數,C的列數等於B的列數。
3、乘積C的第m行第n列的元素等於矩陣A的第m行的元素與矩陣B的第n列對應元素乘積之和。
⑷ 求對角陣的逆
對角矩陣中,如果對角線上的元素都不為0,那麼這個對角陣是可逆的。
其逆矩陣也是一個對角陣,對角線上的元素恰好是對應的原矩陣對角線上元素的倒數。
可以利用逆矩陣的初等變換法證明,所以,逆矩陣如下:
這m×n 個數稱為矩陣A的元素,簡稱為元,數aij位於矩陣A的第i行第j列,稱為矩陣A的(i,j)元,以數 aij為(i,j)元的矩陣可記為(aij)或(aij)m × n,m×n矩陣A也記作Amn。
元素是實數的矩陣稱為實矩陣,元素是復數的矩陣稱為復矩陣。而行數與列數都等於n的矩陣稱為n階矩陣或n階方陣 。