N = 32; M =4; R =2; epi = 0.02; noise = [0.1,0.1^(0.5)]; %contri1 = zeros(M,N); %contri2 = zeros(M,N); con1 = zeros(20,2); con2 = zeros(20,2); re1 = zeros(20,2); re2 = zeros(20,2); for noise_k = 1:2 for k = 1:20 for loop = 1:50 FAR_model = zeros(N,M*N); order = randperm(M)-1; for n = 0 : N-1 Cn = order(ceil(rand()*R)); for q = 0 : N-1 for p = 0:M-1 FAR_model(n+1,q*M+p+1) = exp(1i*2*pi*p/M*Cn+1i*2*pi*q/N*n*(1+Cn*epi)); end end end x = zeros(M,N); col = randperm(N,k); x(:,col) = randn(M,k) + 1i*randn(M,k); y = FAR_model * x(:) + (randn(N,1)+1i*randn(N,1))*noise(noise_k); cvx_begin variable x_e(M,N) complex norm21 = 0; for i = 1:N norm21 = norm21 + norm(FAR_model(:,(i-1)*M+1:i*M)*x_e(:,i)); end minimize(norm21) subject to norm(FAR_model*x_e(:) - y) <= sqrt(N)*noise(noise_k); cvx_end contri2 = zeros(N,1); re_err = zeros(N,1); for i = 1:N if ismember(i,col) re_err = re_err+FAR_model(:,(i-1)*M+1:i*M)*(x_e(:,i)); end contri2(i) = norm(FAR_model(:,(i-1)*M+1:i*M)*(x_e(:,i))); end re1(k,noise_k) = re1(k,noise_k) +norm(FAR_model*x(:)-re_err)/norm(FAR_model*x(:)); con1(k,noise_k) = con1(k,noise_k) + 1-sum(contri2(col))/sum(contri2); cvx_begin variable x_e(M,N) complex norm21 = 0; for i = 1:N norm21 = norm21 + norm(x_e(:,i)); end minimize(norm21) subject to norm(FAR_model*x_e(:) - y) <= sqrt(N)*noise(noise_k); cvx_end re_err = zeros(N,1); contri2 = zeros(N,1); for i = 1:N if ismember(i,col) re_err = re_err+FAR_model(:,(i-1)*M+1:i*M)*(x_e(:,i)); end contri2(i) = norm(FAR_model(:,(i-1)*M+1:i*M)*(x_e(:,i))); end re2(k,noise_k) = re2(k,noise_k) +norm(FAR_model*x(:)-re_err)/norm(FAR_model*x(:)); con2(k,noise_k) = con2(k,noise_k) + 1-sum(contri2(col))/sum(contri2); end end end save("FAR_noise_0206.mat")