當前位置:首頁 » 文件管理 » 壓縮感知代碼

壓縮感知代碼

發布時間: 2022-06-01 03:59:04

壓縮感知OMP程序

% 1-D信號壓縮感測的實現(正交匹配追蹤法Orthogonal Matching Pursuit)
% 測量數M>=K*log(N/K),K是稀疏度,N信號長度,可以近乎完全重構
% 編程人--香港大學電子工程系 沙威 Email: [email protected]
% 編程時間:2008年11月18日
% 文檔下載: http://www.eee.hku.hk/~wsha/Freecode/freecode.htm
% 參考文獻:Joel A. Tropp and Anna C. Gilbert
% 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); % 完整信號
%% 2. 時域信號壓縮感測
Phi=randn(M,N); % 測量矩陣(高斯分布白雜訊)
s=Phi*x.'; % 獲得線性測量
%% 3. 正交匹配追蹤法重構信號(本質上是L_1范數最優化問題)
m=2*K; % 演算法迭代次數(m>=K)
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; % 恢復矩陣的所有列向量
proct(col)=abs(T(:,col)'*r_n); % 恢復矩陣的列向量和殘差的投影系數(內積值)
end
[val,pos]=max(proct); % 最大投影系數對應的位置
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; % 紀錄最大投影系數的位置
end
hat_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演算法代碼

%A-稀疏系數矩陣
%D-字典/測量矩陣(已知)
%X-測量值矩陣(已知)
%K-稀疏度
function A=OMP(D,X,L)
[n,P]=size(X);
[n,K]=size(D);
for k=1:P
a=[];
x=X(:,k);
resial=x;%殘差
indx=zeros(L,1);%索引集
for j=1:L
proj=D'*resial;%D轉置與resial相乘,得到與resial與D每一列的內積值
pos=find(abs(proj)==max(abs(proj)));%找到內積最大值的位置
pos=pos(1);%若最大值不止一個,取第一個
indx(j)=pos;%將這個位置存入索引集的第j個值
a=pinv(D(:,indx(1:j)))*x;%indx(1:j)表示第一列前j個元素
resial=x-D(:,indx(1:j))*a;
end
temp=zeros(K,1);
temp(indx)=a;
A(:,k)=temp;%只顯示非零值及其位置
end

㈢ 壓縮感知(CS)在局部傅里葉矩陣下的壓縮與重構matlab代碼

for t=1:T; % T*M維的局部傅里葉矩陣生成
for m=1:M;
W(t,m)=(exp(-1i*2*pi*t*m/T))/sqrt(T);
end
end

㈣ 有人在學壓縮感知嗎誰知道怎麼用0范數或者L1范數最小化重構原始信號或者給我文獻也行

用0范數或1范數解決cs重構歸屬一個數學問題,猶如給定你一個公式,利用這個公式或者說原理去做出很多的演算法,cs重構本歸屬與對0范數的求解問題上的。
但0范數屬於數學上一個NP_hard問題,是無法解決的,所以不能直接用求0范數的理論去做演算法,從而提出一系列基於求0范數最小的貪婪類演算法。如MP,OMP等演算法。,這類演算法中,最為基礎的算是MP演算法了。貪婪演算法的速度較快,但是重構效果相對較差,需要的測量數也較多,不能高效地壓縮信號,並且對測量矩陣的要求更高。但總的來說,應用范圍廣。
數學家同時發現,求解L1范數也可以逼近與0范數的效果,即把NP_hard問題轉化為線性規劃問題。所以現在有很多用求L1范數原理而創造了各類演算法,最典型的是BP(基追蹤)演算法和梯度投影稀疏重構演算法。這種演算法重構效果很好,但是運算量大,復雜,應用於實際上可能不大。至少得改進其演算法。
還有一大類演算法,我不關注,不說了。
具體那些演算法怎麼實現,自己去網上下程序模擬一下吧。。。。

㈤ 請問你有壓縮感知過程的matlab模擬源代碼嗎模擬結果為如圖

不知道這個對你有用沒,沒仔細研究,只是運行了一下。

㈥ 誰有關於利用壓縮感知優化稀布感測器位置的matlab編程代碼

壓縮感知(Compressive Sensing,CS),有時也叫成Compressive Sampling。相對於傳統的奈奎斯特采樣定理——要求采樣頻率必須是信號最高頻率的兩倍或兩倍以上(這就要求信號是帶限信號,通常在采樣前使用低通濾波器使信號帶限),壓縮感知則利用數據的冗餘特性,只採集少量的樣本還原原始數據。
這所謂的冗餘特性,

㈦ 求壓縮頻譜感知代碼,壓縮感知用OMP演算法,頻譜感知用能量檢測法

㈧ 誰有壓縮感知的代碼

不清楚啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

熱點內容
如何調節安卓手機的內存 發布:2025-01-22 18:49:30 瀏覽:638
佳能相機存儲卡怎麼取消 發布:2025-01-22 18:40:59 瀏覽:568
天貓寶貝上傳 發布:2025-01-22 18:35:09 瀏覽:544
ipad如何登錄金鏟鏟安卓賬號 發布:2025-01-22 18:32:09 瀏覽:319
加密溝通 發布:2025-01-22 18:31:22 瀏覽:555
win7ftp用戶名和密碼設置 發布:2025-01-22 17:46:48 瀏覽:221
三表聯查的sql語句 發布:2025-01-22 17:27:13 瀏覽:418
安卓怎麼解壓分卷壓縮 發布:2025-01-22 17:24:59 瀏覽:721
歐姆龍plc編程語言 發布:2025-01-22 17:21:48 瀏覽:396
和值編程 發布:2025-01-22 17:20:07 瀏覽:518