OMP演算法學習筆記

2021-07-25 04:57:50 字數 3350 閱讀 4776

參考文獻 介紹

omp演算法用於訊號恢復的稀疏近似,假設s∈

rd的稀疏度為

k ,是n

個測量向量,φ∈

rn×d

是乙個測量矩陣,測量值v=

φs,也就是說φ∈

rn×d

是字典矩陣的

m 個列向量的線性組合。

演算法的思想是對於訊號s∈

rd,我們要確定φ∈

rn×d

的哪幾列參與到了

v 的測量中來,以貪婪迭代的方式找出這些列來,每次迭代時,我們選擇

v 中和的剩餘部分最相關的部分來,然後在中減去他們的貢獻,對剩餘項進行迭代,在

m 次迭代後,演算法將得到正確的列。

演算法表述

演算法表述如下

tropp最先提出這種演算法,演算法的**code

也可以參見這篇部落格

%  1-d訊號壓縮感測的實現(正交匹配追蹤法orthogonal matching pursuit)

% 測量數m>=k*log(n/k),k是稀疏度,n訊號長度,可以近乎完全重構

% 程式設計人--香港大學電子工程系 沙威 email: [email protected]

% signal recovery from random measurements via orthogonal matching

% pursuit,ieee transactions on information theory, vol. 53, no. 12,

% december 2007.

clc;clear

%% 1. 時域測試訊號生成

k=7; % 稀疏度(做fft可以看出來)

n=256; % 訊號長度

m=64; % 測量數(m>=k*log(n/k),至少40,但有出錯的概率)

f1=50; % 訊號頻率1

f2=100; % 訊號頻率2

f3=200; % 訊號頻率3

f4=400; % 訊號頻率4

fs=800; % 取樣頻率

ts=1/fs; % 取樣間隔

ts=1:n; % 取樣序列

x=0.3*cos(2*pi*f1*ts*ts)+0.6*cos(2*pi*f2*ts*ts)+0.1*cos(2*pi*f3*ts*ts)+0.9*cos(2*pi*f4*ts*ts); % 完整訊號,由4個訊號疊加而來

%% 2. 時域訊號壓縮感測

phi=randn(m,n); % 測量矩陣(高斯分布白雜訊)64*256的扁矩陣,phi也就是文中說的d矩陣

s=phi*x.'; % 獲得線性測量 ,s相當於文中的y矩陣

%% 3. 正交匹配追蹤法重構訊號(本質上是l_1範數最優化問題)

%匹配追蹤:找到乙個其標記看上去與收集到的資料相關的小波;在資料中去除這個標記的所有印跡;不斷重複直到我們能用小波標記「解釋」收集到的所有資料。

m=2*k; % 演算法迭代次數(m>=k),設x是k-sparse的

psi=fft(eye(n,n))/sqrt(n); % 傅利葉正變換矩陣

t=phi*psi'; % 恢復矩陣(測量矩陣*正交反變換矩陣)

hat_y=zeros(1,n); % 待重構的譜域(變換域)向量

aug_t=; % 增量矩陣(初始值為空矩陣)

r_n=s; % 殘差值

for times=1:m; % 迭代次數(有雜訊的情況下,該迭代次數為k)

for col=1:n; % 恢復矩陣的所有列向量

product(col)=abs(t(:,col)'*r_n); % 恢復矩陣的列向量和殘差的投影係數(內積值)

end[val,pos]=max(product); % 最大投影係數對應的位置,即找到乙個其標記看上去與收集到的資料相關的小波

aug_t=[aug_t,t(:,pos)]; % 矩陣擴充

t(:,pos)=zeros(m,1); % 選中的列置零(實質上應該去掉,為了簡單我把它置零),在資料中去除這個標記的所有印跡

aug_y=(aug_t'*aug_t)^(-1)*aug_t'*s; % 最小二乘,使殘差最小

r_n=s-aug_t*aug_y; % 殘差

pos_array(times)=pos; % 紀錄最大投影係數的位置

endhat_y(pos_array)=aug_y; % 重構的譜域向量

hat_x=real(psi'*hat_y.'); % 做逆傅利葉變換重構得到時域訊號

%% 4. 恢復訊號和原始訊號對比

figure(1);

hold on;

plot(hat_x,'k.-') % 重建訊號

plot(x,'r') % 原始訊號

legend('recovery','original')

norm(hat_x.'-x)/norm(x) % 重構誤差

**執行後的結果如下

一點感想

學習這位博主的寫法

OMP演算法筆記

1 數理知識基礎 投影矩陣 詳見 原文 結論假設 某空間中線性無關的向量組成的矩陣為a,則a的投影矩陣為 則,向量x在空間中的投影為 px px可以看做x在空間a上的投影係數,所以在omp中,將px視為稀疏表示的係數。通過與最小二乘的比較,發現,px與最小二乘解一致,此間聯絡,值得挖掘 2 omp演...

OMP學習筆記

omp學習筆記 reference 1.訊號的稀疏表示 給定乙個過完備字典矩陣,其中它的每列表示一種原型訊號的原子。給定乙個訊號y,它可以被表示成這些原子的稀疏線性組合。訊號 y 可以被表達為 y dx 或者。字典矩陣中所謂過完備性,指的是原子的個數遠遠大於訊號y的長度 其長度很顯然是n 即n 應用...

演算法 學習筆記

1.輸入輸出演算法至少有乙個或多個輸出 2.有窮性 3.確定性 4.可行性 1.正確性a.演算法程式沒有語法錯誤 b.演算法程式對於合法的輸入資料能夠產生滿足要求的輸出結果 c.演算法程式對於非法的輸入資料能夠得出滿足規格說明的結果 d.演算法對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果...