原文 | https://mp.weixin.qq.com/s/YzPoPnRb-gEm_EiV9et0TA
實矩陣也可能碰到復特徵值,因此無可避免地在矩陣運算中碰到複數。
矩陣當然也有可能包含複數,最重要的復矩陣是傅立葉矩陣,它用於傅立葉變換。一種特殊的傅立葉變換是快速傅立葉變換(fast Fourier transform),簡稱FFT,在計算機中很常用,特別是涉及到大數據時,FFT將把傅立葉變換中的n階方正陣乘法的運算次數從n2降低到nlog2n,這是一個巨大的進步。
本文相關前置知識
復向量
先給出一個復向量,即向量的分量中至少有一個是複數:
雖然這個向量在表達上和普通的實向量沒什麼區別,但這個向量不再屬於實空間Rn,而是屬於復空間Cn,即n維復空間。
模長
關於復向量的第一個問題是模長怎麼計算?
由於向量中有複數分量,再用過zTz的方式是無法計算出模長的,比如下面的(1, i):
但很明顯,(1, i)在複平面上的模長不是0:
我們知道一個複數的模長的平方等於這個複數與它的共軛複數的乘積,因此可以通過下面的方式計算復向量的模長:
通常用zH(H來自Hermite)表示共軛向量的轉置:
點積
與模長類似,如果有兩個復向量p和q,它們的點積也不能簡單地定義成pTq,而是pHq:
複平面上有兩個向量p(1, i)和q(1, -i),二者的點積是:
二者的點積是0,因此可以判斷兩個復向量互相垂直:
復矩陣
我們曾講過,對於一個矩陣A來說,如果AT=A,那麼A是對稱矩陣,實際上這個結論僅對實矩陣有效,對復矩陣可不管用。
厄米特矩陣
如果一個復矩陣是對稱矩陣,那麼:
通常寫作另一種方式:
這種對稱復矩陣稱爲厄米特矩陣(或埃米特矩陣,Hermitian matrix),比如下面這個:
酉矩陣
上一章講到,一個復對稱矩陣的特徵值仍然是實數,且可以找到互相垂直的特徵向量,其對角元素都是實數。
假設有一個由n個標準正交向量組成的復矩陣Q = [q1, q2, …, qn],這裏的正交意味:
這個復空間的正交矩陣Q稱爲酉矩陣(unitary matrix)。
傅立葉矩陣和快速傅立葉變換
傅立葉變換是一種分析信號的方法,它可分析信號的成分,也可用這些成分合成信號。許多波形可作爲信號的成分,比如正弦波、方波、鋸齒波等,傅立葉變換用正弦波作爲信號的成分。
在電子工程或計算機中,n×n矩陣的行和列都是從0開始的,到n-1結束,由於傅立葉變換經常用在計算機上,所以我們在討論傅立葉矩陣的時候遵從這種下標規則。
傅立葉矩陣
型如Fn的復矩陣是傅立葉矩陣:
矩陣中的每個元素都不爲0,是個全矩陣。w是個特殊的值:
相關鏈接: 傅立葉矩陣中w的由來
在計算w的乘方的時候,我們需要考慮用極座標表示複平面。在極座標下,w表示模長爲1的向量從(1,0)開始,繞原點逆時針旋轉了2π/n,如此一來,我們就可以知道n等於任意值時w的位置,並且也同樣知道w的乘方的位置。對於w來說,wn的模長仍然等於1,只是旋轉的角度有所不同。比如n=6時,w=ei2π/6= eiπ/3,w2=(eiπ/3)2= ei2π/3。
同理,n=4時,w=ei2π/4,正好落在虛軸上,w= i,w4=1。我們寫出4階傅立葉矩陣:
傅立葉矩陣可以得到一個四點(離散的)傅立葉變換,它的逆矩陣可以得到傅立葉逆變換。此外,傅立葉矩陣的列向量是正交的,所以很容易求得逆矩陣。實際上傅立葉矩陣可以分解成一系列稀疏矩陣,這些矩陣有大量的0元素,所以相應的乘法和求逆都很簡單。
F4的列向量正交,這意味着任意兩個列向量的點積爲0,但如果你還是用過去的點積計算方法就會發現它並不是0(當然有時候會湊巧等於0),比如第2列和第4列:
前面介紹過,復向量的點積不是這麼算的,正確算法應該是取共軛的轉置:
F4的列向量的模長是2,爲了使矩陣更完美,可以把它除以2,於是矩陣的各列就變成了標準正交向量:
對於標準正交的實矩陣來說,矩陣的逆等於矩陣的轉置,傅立葉矩陣可化簡爲標準正交的復矩陣,具有同樣的性質,F4的逆矩陣就是它共軛的轉置:
由於F4的逆矩陣就是F4共軛的轉置,所以F4的逆矩陣和F4具有同樣的性質。
快速傅立葉變換
什麼是快速傅立葉變換呢?舉個例子,F6與F3之間存在着某種奇妙的聯繫,F8與F4,F64與F32也一樣,我們可以把這種聯繫描述出來。
以F64與F32爲例,F64是一個64階方陣,w64 = 1,w = 1;同理對於F32來說,w32 = 1,w = 1。
w64和w32的模長相等,w64的幅角是w32的2倍:
既然如此,F64和F32也應該存在某種聯繫。實際上F64與由兩個F32和兩個零矩陣構成的方陣有關:
這種分解稱爲快速傅立葉變換。其中P是一個2n×2n的置換矩陣,D是由w的冪構成的對角矩陣:
P的效果是使得所乘行向量x中序號爲奇數的分量x1,x3,x5……提到前面,偶數序號的分量x2,x3,x6……放到後面。例如:
可以看到,快速傅立葉變換實際上使用的是分治算法。計算64階傅立葉變換的計算量是642,而經過一次變換後,計算量變成了2×322(2個32階的傅立葉矩陣)再加上一些修正項,而修正項主要來自於和對角矩陣D的乘法,共32次。繼續對F32進行分解……知道矩陣尺度爲1。對於n階矩陣,可將n2次計算降至(n/2) log2n。
作者:我是8位的
出處:https://mp.weixin.qq.com/s/YzPoPnRb-gEm_EiV9et0TA
本文以學習、研究和分享爲主,如需轉載,請聯繫本人,標明作者和出處,非商業用途!
掃描二維碼關注作者公衆號“我是8位的”