影象矩陣用奇異值分解的方法壓縮影象

2021-06-01 17:50:21 字數 5145 閱讀 6356

1樓:電燈劍客

利用奇異值bai分解可以壓du縮一個矩陣,但是對zhi於一般的影象dao來說每個通道都是一

回個矩陣,所以不能直接用答svd。

對於a=udv',如果要重排d的話直接交換u,v中相應的列就行了,相當於a=up*p'dp*p'v'。一般來講如果呼叫數學庫中的函式的話d肯定是已經排好的。

補充:給你舉個例子,如果你要交換d(i,i)和d(j,j),那麼同時把u的第i列和第j列交換一下,把v的第i列和第j列交換一下。

主流的數學庫當中svd都是lapack的實現,次序已經排好了。

什麼是矩陣的奇異值分解?

2樓:徐繹洋

奇異值 奇異值矩陣 奇異值矩陣分解

奇異值分解是線性代數中一種重要的矩陣分解,在訊號處理、統計學等領域有重要應用。

定義:設a為m*n階矩陣,的n個特徵值的非負平方根叫作a的奇異值。記為。

(a),則ha)^(1/2)。

定理:(奇異值分解)設a為m*n階復矩陣,則存在m階酉陣u和n階酉陣v,使得:

a = u*s*v』

其中s=diag(σi,σ2,......,σr),σi>0 (i=1,...,r),r=rank(a)。

推論:設a為m*n階實矩陣,則存在m階正交陣u和n階正交陣v,使得

a = u*s*v』

其中s=diag(σi,σ2,......,σr),σi>0 (i=1,...,r),r=rank(a)。

說明:1、奇異值分解非常有用,對於矩陣a(m*n),存在u(m*m),v(n*n),s(m*n),滿足a = u*s*v』。u和v中分別是a的奇異向量,而s是a的奇異值。

aa'的正交單位特徵向量組成u,特徵值組成s's,a'a的正交單位特徵向量組成v,特徵值(與aa'相同)組成ss'。因此,奇異值分解和特徵值問題緊密聯絡。

2、奇異值分解提供了一些關於a的資訊,例如非零奇異值的數目(s的階數)和a的秩相同,一旦秩r確定,那麼u的前r列構成了a的列向量空間的正交基。

關於奇異值分解中當考慮的物件是實矩陣時: s對角元的平方恰為a'a特徵值的說明. (對復矩陣類似可得)

從上面我們知道矩陣的奇異值分解為: a=usv, 其中u,v是正交陣(所謂b為正交陣是指b'=b-1, 即b'b=i), s為對角陣.

a'a=v's'u'usv=v's'sv=v-1s2v

上式中, 一方面因為s是對角陣, s's=s2, 且s2對角元就是s的對角元的平方. 另一方面注意到a'a是相似與s2的, 因此與s2有相同特徵值.

注:下面的符號和上面的有差異,注意區分

svd步驟:

1、求aha或aah

2、求aha或aah的特徵值及特徵向量x1,x2,...xr, r個特徵值組成

3、 u=(x1,x2,...xr)地

4、v1=au1δr-1,取v2與其正交,則v=(v1,v2)

則n階複方陣u的n個列向量是u空間的一個標準正交基,則u是u距陣.

一個簡單的充分必要判別準則是 方陣u的轉置共扼距陣乘以u 等於單位陣,則u是u距陣

正交向量組的性質

定義1 euclid空間v的一組兩兩正交的非零向量叫做v的一個正交向量組.

若正交向量組的每一個向量都是單位向量,這個正交組就叫做一個標準正交向量組.

設v是一個n維euclid空間.若v中n個向量α1,α2,...,αn構成一個正交組,則由定理9.2.1知道這n個向量構成v的一個基.這樣的一個基叫做v的一個正交基.若v的一個正交基還是一個標準正交向量組,則稱這個基是v的一個標準正交基.

奇異值分解的方法

3樓:匿名使用者

假設m是一個m×n階矩陣,其中的元素全部屬於域 k,也就是 實數域或複數域。如此則存在一個分解使得

m = uσv*,

其中u是m×m階酉矩陣;σ是半正定m×n階對角矩陣;而v*,即v的共軛轉置,是n×n階酉矩陣。這樣的分解就稱作m的奇異值分解。σ對角線上的元素σi,i即為m的奇異值。

常見的做法是為了奇異值由大而小排列。如此σ便能由m唯一確定了。(雖然u和v仍然不能確定。)

奇異值分解在某些方面與對稱矩陣或hermite矩陣基於特徵向量的對角化類似。然而這兩種矩陣分解儘管有其相關性,但還是有明顯的不同。對稱陣特徵向量分解的基礎是譜分析,而奇異值分解則是譜分析理論在任意矩陣上的推廣。

4樓:帝皇俠林宇睿

定理:設a為m*n階復矩陣,則存在m階酉陣u和n階酉陣v,使得:

a = u*s*v』

其中s=diag(σi,σ2,......,σr),σi>0 (i=1,...,r),r=rank(a)。

推論:設a為m*n階實矩陣,則存在m階正交陣u和n階正交陣v,使得

a = u*s*v』

其中s=diag(σi,σ2,......,σr),σi>0 (i=1,...,r),r=rank(a)。

說明:1、 奇異值分解非常有用,對於矩陣a(m*n),存在u(m*m),v(n*n),s(m*n),滿足a = u*s*v』。u和v中分別是a的奇異向量,而s是a的奇異值。

aa'的正交單位特徵向量組成u,特徵值組成s's,a'a的正交單位特徵向量組成v,特徵值(與aa'相同)組成ss'。因此,奇異值分解和特徵值問題緊密聯絡。

2、 奇異值分解提供了一些關於a的資訊,例如非零奇異值的數目(s的階數)和a的秩相同,一旦秩r確定,那麼u的前r列構成了a的列向量空間的正交基。

matlab奇異值分解

函式 svd

格式 s = svd (a) %返回矩陣a的奇異值向量

[u,s,v] = svd(a) %返回一個與a同大小的對角矩陣s,兩個酉矩陣u和v,且滿足= u*s*v'。若a為m×n陣,則u為m×m陣,v為n×n陣。奇異值在s的對角線上,非負且按降序排列

[u1,s1,v1]=svd(x,0) %產生a的「經濟型」分解,只計算出矩陣u的前n列和n×n階的s。

說明:1.「經濟型」分解節省儲存空間。

2. u*s*v'=u1*s1*v1'。

2 矩陣近似值

奇異值分解在統計中的主要應用為主成分分析(pca),它是一種資料分析方法,用來找出大量資料中所隱含的「模式」,它可以用在模式識別,資料壓縮等方面。pca演算法的作用是把資料集對映到低維空間中去。

資料集的特徵值(在svd中用奇異值表徵)按照重要性排列,降維的過程就是捨棄不重要的特徵向量的過程,而剩下的特徵向量張成空間為降維後的空間。

3 應用

在很長時間內,奇異值分解都無法並行處理。(雖然 google 早就有了mapreduce 等平行計算的工具,但是由於奇異值分解很難拆成不相關子運算,即使在 google 內部以前也無法利用平行計算的優勢來分解矩陣。)最近,google 中國的張智威博士和幾個中國的工程師及實習生已經實現了奇異值分解的並行演算法,這是 google中國對世界的一個貢獻。

求實現矩陣奇異值分解的matlab** 150

5樓:匿名使用者

想請教一下題主,為什麼不用自帶的函式,而要自己編?

像這種線性代數的基專礎函式,真正自己編起來是屬有不小難度的,而且即使編出來,質量比起系統自帶的成熟函式,也會差很遠,可以說是完全無價值的重複勞動。

如果是學習某門課程的作業,看有沒有程式語言的要求,要是沒指定必需用matlab的話,可以考慮找c語言的,那個相對還好找一些,而m語言編的好像沒見過。

求matlab 奇異值分解函式 svd和svds的區別

6樓:匿名使用者

設a為m*n階矩陣,a'表示a的轉置矩陣,a'*a的n個特徵值的非負平方根叫作a的奇異值。記為σi(a)。

這幾天做實驗涉及到奇異值分解svd(singular value de***position),涉及到這樣的一個問題,

做pca時候400幅影象拉成向量按列擺放,結果擺成了比如說10000*400大小的矩陣,

用到svd函式進行奇異值分解找主分量,結果matlab提示超出記憶體,後來想起還有個函式叫svds,看到別人用過,以為只是一個變體,沒什麼區別,就用上了,結果確實在預料之中。但是今天覺得不放心,跑到變數裡面看了下,發現這個大的矩陣被分解成了

三個10000*6,6*6,400*6大小的矩陣的乘積,而不是普通的svd分解得到的10000*10000,10000*400,400*400大小的矩陣乘積,把我嚇了一跳,都得到預期的結果,難不成這裡還出個簍子?趕緊試驗,

發現任給一個m*n大小的矩陣,都是被分解成了m*6,6*6,n*6大小的矩陣的乘積,為什麼都會出現6呢?確實很納悶。help svds看了一下,發現svds(a) 返回的就是svds返回的就是最大的6個特徵值及其對應的特徵行向量和特徵列向量,

還好,我們實驗中是在svds得到列向量中再取前5個最大的列向量,這個與普通的svd得到的結果是一致的,虛驚一場。。。還得到了一些別的,比如

改變這個預設的設定,

比如用[u,d,v]=svds(a,10)將得到最大的10個特徵值及其對應的最大特徵行向量和特徵列向量,

[u,d,v]=svds(a,10,0)將得到最小的10個特徵值及其對應的特徵行向量和特徵列向量,

[u,d,v]=svds(a,10,2)將得到與2最接近的10個特徵值及其對應的特徵行向量和特徵列向量。

總之,相比svd,svds的可定製性更強。

奇異值分解非常有用,對於矩陣a(m*n),存在u(m*m),v(n*n),s(m*n),滿足a = u*s*v』。

u和v中分別是a的奇異向量,而s是a的奇異值。

aa'的正交單位特徵向量組成u,特徵值組成s's,

a'a的正交單位特徵向量組成v,特徵值(與aa'相同)組成ss'。

matlab 複數矩陣矩陣奇異值分解

7樓:我行我素

不論實矩陣或是虛矩陣,奇異值分解的結果都是非負的、實數的奇異值,如:

a=magic(5);b=svd(a)

c=rand(5);d=a+1i*c;e=svd(d)結果是:

b =65.0000

22.5471

21.6874

13.4036

11.9008

e =65.0554

22.5819

21.6764

13.4087

11.8961

8樓:匿名使用者

svd同樣可以用於複數矩陣;另外svd(a),需要a是一個矩陣

奇異值分解的範數,特徵值分解和奇異值分解的區別

1.矩陣範數 du的概念 設a cm n,定zhi 義一個實值函式 daoa 若滿專 足 1 非負性 屬 a 0,且 a 0當且僅當a 0 2 齊次性 aa a a a c 3 三角不等式 a b a b a,b cm n 4 相容性 ab a b 則稱 a 為a的矩陣範數。例1 設a aij n,...

Matlab軟體怎樣進行矩陣奇異值分解

矩陣奇異值分解在bai矩陣分du析中佔有極其重要zhi的地位,而這種方法對於學習矩陣dao論的學生來說比回較難答以計算,並且難以理解,以下為使用matlab軟體進行矩陣奇異值分解的方法 http jingyan.使用的版本為matlab 2016a中文破解版 求實現矩陣奇異值分解的matlab 15...

奇異值分解法sup1,9sup,梯度法 sup 1,6 sup

設有任意m n矩陣g,均可抄分解為g uwvt。其中u為m bair矩陣 v為n r矩陣 w為r r對角du矩陣,zhi除對角線外其他元素dao全為零 1 即 地球物理反演教程 式 4.4 中 r為矩陣g的秩 1 2 r為矩陣的奇異值,是gtg或ggt的r個非零特徵值之正根。u是ggt的m r特徵向...