壓縮感知重構訊號(matlab原始碼)

2021-09-06 21:38:44 字數 1905 閱讀 1233

function cs

clc;

clear

k=8; % 稀疏度

n=256; % 訊號長度

m=64; % 測量數

f1=50; % 訊號頻率1

f2=100; % 訊號頻率2

f3=200; % 訊號頻率3

f4=400; % 訊號頻率4

fs=800; % 取樣頻率

ts=1/fs; % 取樣間隔

ts=1:n; % 取樣序列

x=0.2*sin(2*pi*f1*ts*ts)+0.4*sin(2*pi*f2*ts*ts)+0.6*sin(2*pi*f3*ts*ts)+0.9*sin(2*pi*f4*ts*ts); % 完整訊號

phi=randn(m,n); % 測量矩陣(高斯分布白雜訊)

s=phi*x.'; % 獲得線性測量

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;

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.'); % 做逆傅利葉變換重構得到時域訊號

figure(1);

hold on;

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

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

legend('原始訊號','恢復訊號')

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

壓縮感知重構演算法之子空間追蹤 SP

題目 壓縮感知重構演算法之子空間追蹤 sp 如果掌握了壓縮取樣匹配追蹤 cosamp 後,再去學習子空間追蹤 subspace pursuit 是一件非常簡單的事情,因為它們幾乎是完全一樣的。sp的提出時間比cosamp提出時間略晚,首個 版本是參考文獻 1 後來更新了兩次,最後在ieee tran...

壓縮感知重構演算法之SP演算法python實現

壓縮感知重構演算法之omp演算法python實現 壓縮感知重構演算法之cosamp演算法python實現 壓縮感知重構演算法之sp演算法python實現 壓縮感知重構演算法之iht演算法python實現 壓縮感知重構演算法之ols演算法python實現 壓縮感知重構演算法之irls演算法python...

壓縮感知簡介

nyquist取樣定理 夏農取樣定理 指出,取樣速率達到訊號頻寬的兩倍以上時,才能由取樣訊號精確重建原始訊號。可見,頻寬是nyquist 取樣定理對取樣的本質要求。然而隨著人們對資訊需求量的增加,攜帶資訊的訊號頻寬越來越寬,以此為基礎的訊號處理框架要求的取樣速率和處理速度也越來越高。解決這些壓力常見...