Add lyh-非满秩相变

This commit is contained in:
Ksyer
2024-11-11 16:33:48 +08:00
parent e6a19b477e
commit e0b910b56d
52 changed files with 208020 additions and 0 deletions
@@ -0,0 +1,80 @@
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")