IHT迭代硬阈值在压缩感知重建中的应用

IHT迭代硬阈值在压缩感知重建中的应用

IHT算子程序

function [a3] =IHT_Opeator(a,s)
%UNTITLED 此处显示有关此函数的摘要
%   此处显示详细说明
%a 向量
%s s项最佳逼近
[a1,index1]=sort(abs(a),'descend');%降序排列
a2=a(index1(1:s));%提取系数最大的s项
index2=index1(index1(1:s));%系数最大的s项对应索引
a3=zeros(length(a),1);%生成与输入向量等长的0向量
a3(index1(1:s))=a2;%生成输入向量的s项最佳逼近
end

IHT函数

function [y2] =IHT(K,k,A,y)
%UNTITLED4 此处显示有关此函数的摘要
%   此处显示详细说明
[row,col]=size(A);
y1=zeros(col,1);%0向量作为初始迭代向量
for i=1:k
    y1=y1+A'*(y-A*y1);
    y2=IHT_Opeator(y1,K);
    y1=y2;
end
end

主程序

clear;
clc;
N=1024*0.5;%待观测目标信号长度
K=10*1;%目标信号稀疏度
k=100;%迭代次数
M=120*1;%观测值个数
M1=0.28*K*log(N/K);
A=randn(M,N);%生成M*N的服从高斯分布的测量矩阵
A=orth(A')';%把测量矩阵按行正交化
c=ones(N,1);%生成全1向量
c1=zeros(N,1);%生成全0向量
delta=0;
gama=0;
s=1:K;
x=zeros(N,1);
q=randperm(N);%随机打乱排序
t=1:N;
x(q(1:K))=s;
x(q(1:K))=sign(randn(K,1));%生成幅值为1K个非0元素的目标信号y
b=A*x;
y2=IHT(K,k,A,b);
plot(t,x,'r',t,y2,'g  *');
legend('red 代表原始信号','green 代表IHT恢复的信号');

测试结果

在这里插入图片描述

[1]Blumensath T , Davies M E . Iterative Hard Thresholding for Compressed Sensing[J]. 2008.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值