版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
壓縮感知重構(gòu)算法之分段正交匹配追蹤(StOMP)分段正交匹配追蹤(StagewiseOMP)或者翻譯為逐步正交匹配追蹤,它是OMP另一種改進(jìn)算法,每次迭代可以選擇多個(gè)原子。此算法的輸入?yún)?shù)中沒(méi)有信號(hào)稀疏度K,因此相比于ROMP及CoSaMP有獨(dú)到的優(yōu)勢(shì)。0、符號(hào)說(shuō)明如下:壓縮觀測(cè)y=Φx,其中y為觀測(cè)所得向量M×1,x為原信號(hào)N×1(M<<N)。x一般不是稀疏的,但在某個(gè)變換域Ψ是稀疏的,即x=Ψθ,其中θ為K稀疏的,即θ只有K個(gè)非零項(xiàng)。此時(shí)y=ΦΨθ,令A(yù)=ΦΨ,則y=Aθ。(1)y為觀測(cè)所得向量,大小為M×1(2)x為原信號(hào),大小為N×1(3)θ為K稀疏的,是信號(hào)在x在某變換域的稀疏表示(4)Φ稱為觀測(cè)矩陣、測(cè)量矩陣、測(cè)量基,大小為M×N(5)Ψ稱為變換矩陣、變換基、稀疏矩陣、稀疏基、正交基字典矩陣,大小為N×N(6)A稱為測(cè)度矩陣、傳感矩陣、CS信息算子,大小為M×N上式中,一般有K<<M<<N,后面三個(gè)矩陣各個(gè)文獻(xiàn)的叫法不一,以后我將Φ稱為測(cè)量矩陣、將Ψ稱為稀疏矩陣、將A稱為傳感矩陣。注意:這里的稀疏表示模型為x=Ψθ,所以傳感矩陣A=ΦΨ;而有些文獻(xiàn)中稀疏模型為θ=Ψx,而一般Ψ為Hermite矩陣(實(shí)矩陣時(shí)稱為正交矩陣),所以Ψ-1=ΨH(實(shí)矩陣時(shí)為Ψ-1=ΨT),即x=ΨHθ,所以傳感矩陣A=ΦΨH,例如沙威的OMP例程中就是如此。1、StOMP重構(gòu)算法流程:2、分段正交匹配追蹤(StOMP)Matlab代碼(CS_StOMP.m)代碼參考了文獻(xiàn)[4]中的SolveStOMP.m,也可參考文獻(xiàn)[5]中的StOMP.m。其實(shí)文獻(xiàn)[4]是斯坦福的SparseLab中的一個(gè)函數(shù)而已,鏈接為/,最新版本為2.1,SolveStOMP.m在目錄SparseLab21-Core\SparseLab2.1-Core\Solvers里面。function[theta]=CS_StOMP(y,A,S,ts)%CS_StOMPSummaryofthisfunctiongoeshere%Version:1.0writtenbyjbb0523@2015-04-29%Detailedexplanationgoeshere%y=Phi*x%x=Psi*theta%y=Phi*Psi*theta%
令
A
=
Phi*Psi,
則y=A*theta
%
S
is
the
maximum
number
of
StOMP
iterations
to
perform
%
ts
is
the
threshold
parameter
%
現(xiàn)在已知y和A,求theta
%
Reference:Donoho
D
L,Tsaig
Y,Drori
I,Starck
J
L.Sparse
solution
of
%
underdetermined
linear
equations
by
stagewise
orthogonal
matching
%
pursuit[J].IEEE
Transactions
on
Information
Theory,2012,58(2):1094—1121
if
nargin
<
4
ts
=
2.5;%ts范圍[2,3],默認(rèn)值為2.5
end
if
nargin
<
3
S
=
10;%S默認(rèn)值為10
end
[y_rows,y_columns]
=
size(y);
if
y_rows<y_columns
y
=
y';%y
should
be
a
column
vector
end
[M,N]
=
size(A);%傳感矩陣A為M*N矩陣
theta
=
zeros(N,1);%用來(lái)存儲(chǔ)恢復(fù)的theta(列向量)
Pos_theta
=
[];%用來(lái)迭代過(guò)程中存儲(chǔ)A被選擇的列序號(hào)
r_n
=
y;%初始化殘差(residual)為y
for
ss=1:S%最多迭代S次
product
=
A'*r_n;%傳感矩陣A各列與殘差的內(nèi)積
sigma
=
norm(r_n)/sqrt(M);%參見參考文獻(xiàn)第3頁(yè)Remarks(3)
Js
=
find(abs(product)>ts*sigma);%選出大于閾值的列
Is
=
union(Pos_theta,Js);%Pos_theta與Js并集
if
length(Pos_theta)
==
length(Is)
if
ss==1
theta_ls
=
0;%防止第1次就跳出導(dǎo)致theta_ls無(wú)定義
end
break;%如果沒(méi)有新的列被選中則跳出循環(huán)
end
%At的行數(shù)要大于列數(shù),此為最小二乘的基礎(chǔ)(列線性無(wú)關(guān))
if
length(Is)<=M
Pos_theta
=
Is;%更新列序號(hào)集合
At
=
A(:,Pos_theta);%將A的這幾列組成矩陣At
else%At的列數(shù)大于行數(shù),列必為線性相關(guān)的,At'*At將不可逆
if
ss==1
theta_ls
=
0;%防止第1次就跳出導(dǎo)致theta_ls無(wú)定義
end
break;%跳出for循環(huán)
end
%y=At*theta,以下求theta的最小二乘解(Least
Square)
theta_ls
=
(At'*At)^(-1)*At'*y;%最小二乘解
%At*theta_ls是y在At列空間上的正交投影
r_n
=
y
-
At*theta_ls;%更新殘差
if
norm(r_n)<1e-6%Repeat
the
steps
until
r=0
break;%跳出for循環(huán)
end
end
theta(Pos_theta)=theta_ls;%恢復(fù)出的theta
end
3、StOMP單次重構(gòu)測(cè)試代碼
以下測(cè)試代碼基本與OMP單次重構(gòu)測(cè)試代碼一樣,除了調(diào)用CS_StOMP之外,一定要注意這里的測(cè)量矩陣Phi=randn(M,N)/sqrt(M),一定一定?。?![plain]
\o"viewplain"viewplain\o"copy"copy%壓縮感知重構(gòu)算法測(cè)試
clear
all;close
all;clc;
M
=
64;%觀測(cè)值個(gè)數(shù)
N
=
256;%信號(hào)x的長(zhǎng)度
K
=
12;%信號(hào)x的稀疏度
Index_K
=
randperm(N);
x
=
zeros(N,1);
x(Index_K(1:K))
=
5*randn(K,1);%x為K稀疏的,且位置是隨機(jī)的
Psi
=
eye(N);%x本身是稀疏的,定義稀疏矩陣為單位陣x=Psi*theta
Phi
=
randn(M,N)/sqrt(M);%測(cè)量矩陣為高斯矩陣
A
=
Phi
*
Psi;%傳感矩陣
y
=
Phi
*
x;%得到觀測(cè)向量y
%%
恢復(fù)重構(gòu)信號(hào)x
tic
theta
=
CS_StOMP(y,A);
x_r
=
Psi
*
theta;%
x=Psi
*
theta
toc
%%
繪圖
figure;
plot(x_r,'k.-');%繪出x的恢復(fù)信號(hào)
hold
on;
plot(x,'r');%繪出原信號(hào)x
hold
off;
legend('Recovery','Original')
fprintf('\n恢復(fù)殘差:');
norm(x_r-x)%恢復(fù)殘差
運(yùn)行結(jié)果如下:(信號(hào)為隨機(jī)生成,所以每次結(jié)果均不一樣)
1)圖:
2)Command
windows
Elapsedtimeis0.067904seconds.
恢復(fù)殘差:
ans=
6.1267e-0154、門限參數(shù)ts、測(cè)量數(shù)M與重構(gòu)成功概率關(guān)系曲線繪制例程代碼
因?yàn)槲墨I(xiàn)[1]中對(duì)門限參數(shù)ts給出的是一個(gè)取值范圍,所以有必要仿真ts取不同值時(shí)的重構(gòu)效果,因此以下的代碼雖然是基于OMP相應(yīng)的測(cè)試代碼修改的,但相對(duì)來(lái)說(shuō)改動(dòng)較大。[plain]
\o"viewplain"viewplain\o"copy"copyclear
all;close
all;clc;
%%
參數(shù)配置初始化
CNT
=
1000;%對(duì)于每組(K,M,N),重復(fù)迭代次數(shù)
N
=
256;%信號(hào)x的長(zhǎng)度
Psi
=
eye(N);%x本身是稀疏的,定義稀疏矩陣為單位陣x=Psi*theta
ts_set
=
2:0.2:3;
K_set
=
[4,12,20,28,36];%信號(hào)x的稀疏度集合
Percentage
=
zeros(N,length(K_set),length(ts_set));%存儲(chǔ)恢復(fù)成功概率
%%
主循環(huán),遍歷每組(ts,K,M,N)
tic
for
tt
=
1:length(ts_set)
ts
=
ts_set(tt);
for
kk
=
1:length(K_set)
K
=
K_set(kk);%本次稀疏度
%M沒(méi)必要全部遍歷,每隔5測(cè)試一個(gè)就可以了
M_set=2*K:5:N;
PercentageK
=
zeros(1,length(M_set));%存儲(chǔ)此稀疏度K下不同M的恢復(fù)成功概率
for
mm
=
1:length(M_set)
M
=
M_set(mm);%本次觀測(cè)值個(gè)數(shù)
fprintf('ts=%f,K=%d,M=%d\n',ts,K,M);
P
=
0;
for
cnt
=
1:CNT
%每個(gè)觀測(cè)值個(gè)數(shù)均運(yùn)行CNT次
Index_K
=
randperm(N);
x
=
zeros(N,1);
x(Index_K(1:K))
=
5*randn(K,1);%x為K稀疏的,且位置是隨機(jī)的
Phi
=
randn(M,N)/sqrt(M);%測(cè)量矩陣為高斯矩陣
A
=
Phi
*
Psi;%傳感矩陣
y
=
Phi
*
x;%得到觀測(cè)向量y
theta
=
CS_StOMP(y,A,10,ts);%恢復(fù)重構(gòu)信號(hào)theta
x_r
=
Psi
*
theta;%
x=Psi
*
theta
if
norm(x_r-x)<1e-6%如果殘差小于1e-6則認(rèn)為恢復(fù)成功
P
=
P
+
1;
end
end
PercentageK(mm)
=
P/CNT*100;%計(jì)算恢復(fù)概率
end
Percentage(1:length(M_set),kk,tt)
=
PercentageK;
end
end
toc
save
StOMPMtoPercentage1000
%運(yùn)行一次不容易,把變量全部存儲(chǔ)下來(lái)
%%
繪圖
for
tt
=
1:length(ts_set)
S
=
['-ks';'-ko';'-kd';'-kv';'-k*'];
figure;
for
kk
=
1:length(K_set)
K
=
K_set(kk);
M_set=2*K:5:N;
L_Mset
=
length(M_set);
plot(M_set,Percentage(1:L_Mset,kk,tt),S(kk,:));%繪出x的恢復(fù)信號(hào)
hold
on;
end
hold
off;
xlim([0
256]);
legend('K=4','K=12','K=20','K=28','K=36');
xlabel('Number
of
measurements(M)');
ylabel('Percentage
recovered');
title(['Percentage
of
input
signals
recovered
correctly(N=256,ts=',...
num2str(ts_set(tt)),')(Gaussian)']);
end
for
kk
=
1:length(K_set)
K
=
K_set(kk);
M_set=2*K:5:N;
L_Mset
=
length(M_set);
S
=
['-ks';'-ko';'-kd';'-kv';'-k*';'-k+'];
figure;
for
tt
=
1:length(ts_set)
plot(M_set,Percentage(1:L_Mset,kk,tt),S(tt,:));%繪出x的恢復(fù)信號(hào)
hold
on;
end
hold
off;
xlim([0
256]);
legend('ts=2.0','ts=2.2','ts=2.4','ts=2.6','ts=2.8','ts=3.0');
xlabel('Number
of
measurements(M)');
ylabel('Percentage
recovered');
title(['Percentage
of
input
signals
recovered
correctly(N=256,K=',...
num2str(K),')(Gaussian)']);
end
本程序在聯(lián)想ThinkPadE430C筆記本(4GBDDR3內(nèi)存,i5-3210)上運(yùn)行共耗時(shí)4707.513276秒,程序中將所有數(shù)據(jù)均通過(guò)“saveStOMPMtoPercentage1000”存儲(chǔ)了下來(lái),以后可以再對(duì)數(shù)據(jù)進(jìn)行分析,只需“l(fā)oadStOMPMtoPercentage1000”即可。
程序運(yùn)行結(jié)束會(huì)出現(xiàn)6+5=11幅圖,前6幅圖分別是ts分別為2.0、2.2、2.4、2.6、2.8和3.0時(shí)的測(cè)量數(shù)M與重構(gòu)成功概率關(guān)系曲線(類似于OMP此部分,這里只是對(duì)每一個(gè)不同的ts畫出一幅圖),后5幅圖是分別將稀疏度K為4、12、20、28、32時(shí)將六種ts取值的測(cè)量數(shù)M與重構(gòu)成功概率關(guān)系曲線繪制在一起以比較ts對(duì)重構(gòu)結(jié)果的影響。
對(duì)于前6幅圖這里只給出ts=2.4時(shí)的曲線圖:
對(duì)于后5幅圖這里全部給出,為了清楚地看出ts的影響,這里把圖的橫軸拉伸:
通過(guò)對(duì)比可以看出,總體上講ts=2.4或ts=2.6時(shí)效果較好,較大和較小重構(gòu)效果都會(huì)降低,這里由于沒(méi)有ts=2.5的情況,但我們推測(cè)ts=2.5應(yīng)該是一個(gè)比較好的值,因此一般默認(rèn)取為2.5即可。5、結(jié)語(yǔ)
有關(guān)StOMP的流程圖可參見文獻(xiàn)[1]的Fig.1:
有關(guān)StOMP門限的選取在文獻(xiàn)[1]中也有提及:關(guān)于這個(gè)門限的來(lái)源文獻(xiàn)[1]有也有一個(gè)推導(dǎo),注意推導(dǎo)過(guò)程中的N(0,1/n):
作者在文獻(xiàn)[1]中提出StOMP,這篇文章的發(fā)表時(shí)間是2012年,但看一下這篇文章的左下角會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題:注意,文章在2006-04-05就投稿了,直到2011-08-17修回并被接受,然后2012年才發(fā)表。也就是說(shuō)審稿就審了五年多,按說(shuō)文章第一作者是大牛,雖說(shuō)IEEETransactionsonInformationTheory是一個(gè)頂級(jí)期刊,但對(duì)DonohoDL來(lái)說(shuō)也應(yīng)該不算是什么難事,不知道為什么會(huì)出現(xiàn)這種現(xiàn)象。當(dāng)然,英文文獻(xiàn)里有個(gè)有趣的現(xiàn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 不能玩火教案反思
- 海島冰輪初轉(zhuǎn)騰說(shuō)課稿
- 農(nóng)忙季節(jié)臨時(shí)幫工合同
- 通信設(shè)備公司人才引進(jìn)合同樣板
- 車輛報(bào)廢回收企業(yè)管理辦法
- 通信工程配電房建設(shè)協(xié)議
- 人力資源服務(wù)審批指南
- 網(wǎng)絡(luò)應(yīng)急演練
- 設(shè)備買賣合同簽訂預(yù)付款政策
- 肌腱斷裂術(shù)后護(hù)理及功能鍛煉
- Tio2材料的性質(zhì)及應(yīng)用-課件
- 教育科研專題講座課件
- 語(yǔ)文課前三分鐘演講西塘古鎮(zhèn)課件
- 建筑工程常用英語(yǔ)詞匯
- 熱工基礎(chǔ)第一章
- 翻身拍背課件
- 2022版小學(xué)英語(yǔ)新課標(biāo)詳細(xì)解讀中小學(xué)英語(yǔ)教師培訓(xùn)PPT模板
- 全套課件-中文版AutoCAD-2020基礎(chǔ)教程-完整
- 中醫(yī)穴位養(yǎng)生保健課件
- 屬地管理課件
- 可行性研究報(bào)告編制工作流程
評(píng)論
0/150
提交評(píng)論