施密特 Schimidt 正交化與正交匹配追蹤

2021-07-01 21:17:22 字數 4062 閱讀 3617

題目:施密特(schimidt)正交化與正交匹配追蹤

文獻[1]中給出了施密特(schimidt)正交化的過程:

上面的的[x,y]表示向量內積,[x,y]=xty=ytx=[x,y]。施密特正交化公式中的br實際上可寫為:

分子之所以可以這麼變化是由於[x,y]實際上為乙個數,因此[x,y]x=x[x,y]=xxty

m是在所有被選擇過的原子

組成的矩陣φt

所張成空間上的正交投影,而mp減去的pem是在本次被選擇的原子φp

所張成空間上的正交投影。正交投影及正交投影變換矩陣的概念可以參見《壓縮感知中的數學知識:投影矩陣(projectionmatrix)》。

首先給出乙個結論:

設omp共從冗餘字典中選擇了r個原子,分別是a1,a2,……,ar,根據正交匹配追蹤的流程可以知道待分解訊號x最後剩餘的殘差eromp為

(式1)

該殘差也可以表示為

(式2)

其中矩陣a為選擇的r個原子組成的矩陣,e(r-1)omp為選擇(r-1)個原子時的殘差。

將選擇的r個原子a1,a2,……,ar進行施密特正交化:

則殘差eromp還可以寫為

(式1)一般出現在稀疏分解演算法中,(式2)一般出現在重構演算法中,(式3)是自己琢磨出來的(受到沙威的文件中提到的施密特正交化的啟發,但沙威只限於向量情況下,詳情可參見[3],此處相當於乙個推廣)。

而實際上(式1)、(式2)和(式3)三種正交匹配追蹤演算法的殘差計算方法是等價的,純數學證明比較複雜,這裡給乙個matlab程式,可以驗證三者的等價性:

%% 驗證omp殘差求解過程與schmidt正交化的關係

m = 4;n = 10;

phi = randn(m,n);

for nn = 1:n

phi(:,nn) = phi(:,nn)/norm(phi(:,nn));

endb = randn(m,1);

e0 = b;%初始化殘差為待稀疏訊號b

%選第1列

c1 = phi'*e0;%求出矩陣phi每列與b的內積

[val1,pos1]=max(abs(c1));%找到內積中最大的列及其內積值

phit = [phi(:,pos1)];%由所有選出的列組合的矩陣

pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣

e1ompe = e0 - pphi*e0;%omp用上一次殘差減去殘差在phit列空間的正交投影

e1ompb = b - pphi*b;%omp用待稀疏訊號b減去b在phit列空間的正交投影

x = phi(:,pos1);%schimidt正交化第乙個向量

px = x*(x'*x)^(-1)*x';

%實際上是b - px*b

e1ompsmt = e0 - px*b;

e1 = e1ompe;

norm(e1ompe-e1ompb)+norm(e1ompsmt-e1ompb)

%選第2列

c2 = phi'*e1;%求出矩陣phi每列與e1的內積

[val2,pos2]=max(abs(c2));%找到內積中最大的列及其內積值

phit = [phi(:,pos1) phi(:,pos2)];%由所有選出的列組合的矩陣

pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣

e2ompe = e1 - pphi*e1;%omp用上一次殘差減去殘差在phit列空間的正交投影

e2ompb = b - pphi*b;%omp用待稀疏訊號b減去b在phit列空間的正交投影

y = phi(:,pos2) - px*phi(:,pos2);%schimidt正交化第二個向量

py = y*(y'*y)^(-1)*y';

%實際上是b - px*b - py*b

e2ompsmt = e1 - py*b;%上一次殘差減去b在第2列正交化所得z上的投影

e2 = e2ompe;

norm(e2ompe-e2ompb)+norm(e2ompsmt-e2ompb)

%選第3列

c3 = phi'*e2;%求出矩陣phi每列與e2的內積

[val3,pos3]=max(abs(c3));%找到內積中最大的列及其內積值

phit = [phi(:,pos1) phi(:,pos2) phi(:,pos3)];%由所有選出的列組合的矩陣

pphi = phit*(phit'*phit)^(-1)*phit';%正交投影變換矩陣

e3ompe = e2 - pphi*e2;%omp用上一次殘差減去殘差在phit列空間的正交投影

e3ompb = b - pphi*b;%omp用待稀疏訊號b減去b在phit列空間的正交投影

z = phi(:,pos3) - px*phi(:,pos3) - py*phi(:,pos3);%schimidt正交化第三個向量

pz = z*(z'*z)^(-1)*z';

%實際上是b - px*b - py*b - pz*b

e3ompsmt = e2 - pz*b;%上一次殘差減去b在第3列正交化所得z上的投影

e3 = e3ompe;

norm(e3ompe-e3ompb)+norm(e3ompsmt-e3ompb)

程式最後一行的輸出結果為零,說明三個殘差是相等的。

這裡可以看出omp與schimidt正交化的關係:

omp分解過程,實際上是將所選原子依次進行schimidt正交化,然後將待分解訊號減去在正交化後的原子上各自的分量即可得殘差。其實(式3)求殘差的過程也是在進行施密特正交化

同理,若設mp共從冗餘字典中選擇了r個原子,分別是a1,a2,……,ar,根據匹配追蹤的流程可以知道待分解訊號x每次迭代後剩餘的殘差ermp為

比較式(3)的第2個等號表示的eromp與此處的ermp也可以體會出omp與mp的區別吧。

【參考文獻】

同濟大學數學系. 線性代數(第五版)[m].高等教育出版社,2007:114.

joel a. tropp and annac. gilbert . signal recovery from random measurements via orthogonal matchingpursuit[j]. ieee transactions on information theory, vol. 53, no. 12, december2007.

沙威. 「壓縮感測」引論.

施密特正交化

對於一組向量,有時候我們需要對其進行正交化處理,也就是說,該組向量中任意兩個向量都是互相垂直的。那麼,要怎麼做呢?假設只有兩個向量,vec v 0 和 vec v 1 正交化的幾何示意圖如下所示。假設正交化之後的向量為 vec w 0 和 vec w 1 那麼由圖可知,可得 vec w 0 vec ...

列正交化 施密特正交化方法

a1 1 1 0 0 a2 1 0 1 0 a3 1 0 0 1 a a1 a2 a3 u a m,n size u y u y 1 y 1 norm y 1 for k 2 n y k u k endfor k 2 n for j k n y j y j y k 1 y j y k 1 endp1...

向量的施密特正交化

先看乙個例子 設三個向量分別為 1 2 3 1,1,0 t 1,0,1 t 1,1,1 t 那麼對 1 2 正交化 1 2 1 1 1,0 t 2 2,1 1,1 1 1,0 1 t 1 1 0 1 1 01 1 1 1 0 0 1,1,0 t 1 0,1 t 12 1 1,0 t 12 1 1,2...