利用matlab采用ADMM算法对稀疏信号进行复原

在这篇文章中中,我将给出如何实现稀疏信号恢复的ADMM方法的细节。具体代码如下:

clear; close all; clc;
rng(0);  % for reproducibility, do not change it!
m = 50;  % num samples
n = 200; % num variables, note that n > m

A = rand(m, n);  % simulate matrix A 模拟矩阵A
x = zeros(n, 1); % simulate true sparse signal x: line 13-16 模拟稀疏信号
nz = 10;         % 
nz_idx = randperm(n);
x(nz_idx(1:nz)) = 2 * rand(nz, 1);
y = A*x;         % simulate a degraded signal
y = y + 0.1 * rand(m, 1); % add some noise to the degraded signal




[m, n] = size(A);


b = zeros(n,1);  %n行1列
b1 = zeros(m,1);
b2 = zeros(n,1);

beta1 = 1e-1;  % The para. in Algrithm 1
beta2 = 1e-2;
lambda = 1e-2;

k=0;
ReErr=1;
maxitr = 500;
tol  = 1e-8;
b_old = b;
b1_old = b1;
b2_old = b2;

while ReErr> tol && k<maxitr

u_old = sign(y-A*b_old-b1_old).*max(abs(y-A*b_old-b1_old)-1/beta1,0) ;%第一次计算u



v_old = sign(b_old-b2_o
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值