matlab特征值分解和奇異值分解


特征值分解

函數 eig

格式 d = eig(A)         %求矩陣A的特征值d,以向量形式存放d。

d = eig(A,B)       %A、B為方陣,求廣義特征值d,以向量形式存放d。

[V,D] = eig(A)      %計算A的特征值對角陣D和特征向量V,使AV=VD成立。

[V,D] = eig(A,'nobalance')   %當矩陣A中有與截斷誤差數量級相差不遠的值時,該指令可能更精確。'nobalance'起誤差調節作用。

[V,D] = eig(A,B)    %計算廣義特征值向量陣V和廣義特征值陣D,滿足AV=BVD。

[V,D] = eig(A,B,flag)   % 由flag指定算法計算特征值D和特征向量V,flag的可能值為:'chol' 表示對B使用Cholesky分解算法,這里A為對稱Hermitian矩陣,B為正定陣。'qz' 表示使用QZ算法,這里A、B為非對稱或非Hermitian矩陣。

說明 一般特征值問題是求解方程: 解的問題。廣義特征值問題是求方程: 解的問題。


奇異值分解

函數 svd

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

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

[U,S,V] = svd (X,0)   %得到一個“有效大小”的分解,只計算出矩陣U的前n列,矩陣S的大小為n×n。

 

奇異值分解壓縮圖像

clear all;
close all;
clc;

a=imread('C:\Users\ranji\Desktop\rgb_image.jpg');

imshow(mat2gray(a))
[m n]=size(a);
a=double(a);
%r=rank(a);
[s v d]=svd(a(:,:,1)); %取一個分量

%re=s*v*d';
re=s(:,:)*v(:,1:1)*d(:,1:1)';
figure;
imshow(mat2gray(re));
imwrite(mat2gray(re),'C:\Users\ranji\Desktop\1.jpg')

 

re1=s(:,:)*v(:,1:20)*d(:,1:20)';
figure;
imshow(mat2gray(re));
imwrite(mat2gray(re),'C:\Users\ranji\Desktop\2.jpg')


re=s(:,:)*v(:,1:80)*d(:,1:80)';
figure;
imshow(mat2gray(re));
imwrite(mat2gray(re),'C:\Users\ranji\Desktop\3.jpg')

 

re=s(:,:)*v(:,1:150)*d(:,1:150)';
figure;
imshow(mat2gray(re));
imwrite(mat2gray(re),'C:\Users\ranji\Desktop\4.jpg')
不同特征值進行重構的效果。。。

 

最后說一些奇異值分解的應用:

1.圖像壓縮,正如上面的。

2.噪聲濾波。

3.模式識別。因為svd就是提取主要的成分嘛。

4.生物,物理,經濟方面的一些統計模型的處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM