參考文獻 介紹
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: wsha@eee.hku.hk
% 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.演算法對於精心選擇的,甚至刁難的測試資料都有滿足要求的輸出結果...