Add lyh-非满秩相变
This commit is contained in:
@@ -0,0 +1,229 @@
|
||||
close all;
|
||||
clear all;
|
||||
clc;
|
||||
M = 4;
|
||||
N = 128;
|
||||
%block_sparsity = 1;
|
||||
tol = 1e-5;
|
||||
trial = 50;
|
||||
epi = 0.02;
|
||||
result = zeros(N,25);
|
||||
for col = 4:4:128
|
||||
for block_sparsity = 10:18
|
||||
success_count = 0;
|
||||
for loop = 1:trial
|
||||
FAR_model = zeros(N,M*N);
|
||||
%Cn = randperm(M)-1
|
||||
for n = 0 : N-1
|
||||
Cn = floor(rand()*M);
|
||||
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
|
||||
col_choose = randperm(N,col);
|
||||
FAR_model = FAR_model(col_choose,:);
|
||||
sparse_signal = zeros(M,N);
|
||||
block = randperm(N,block_sparsity);
|
||||
sparse_signal(:,block) = exp(1i*2*pi*rand(M,block_sparsity));
|
||||
y = FAR_model * sparse_signal(:);
|
||||
cvx_begin
|
||||
variable x(M,N) complex
|
||||
norm21 = 0;
|
||||
for i = 1:N
|
||||
norm21 = norm21 + norm(x(:,i));
|
||||
end
|
||||
minimize(norm21)
|
||||
subject to
|
||||
FAR_model * x(:) == y
|
||||
cvx_end
|
||||
if norm(x(:)-sparse_signal(:))<tol
|
||||
success_count = success_count+1;
|
||||
end
|
||||
end
|
||||
result(col,block_sparsity) = success_count/trial;
|
||||
end
|
||||
end
|
||||
%save('FARblockepsilon2.mat');
|
||||
|
||||
%%
|
||||
close all;
|
||||
clear all;
|
||||
clc;
|
||||
M = 4;
|
||||
N = 128;
|
||||
%block_sparsity = 1;
|
||||
tol = 1e-5;
|
||||
trial = 30;
|
||||
epi = 0.02;
|
||||
result = zeros(1,25);
|
||||
col = 128;
|
||||
Prob = [1/3,1/3,1/6,1/6];
|
||||
for block_sparsity = 4:18
|
||||
success_count = 0;
|
||||
for loop = 1:trial
|
||||
FAR_model = zeros(N,M*N);
|
||||
%Cn = randperm(M)-1
|
||||
for n = 0 : N-1
|
||||
Cn = randsrc(1,1,[[0,1,2,3];Prob]);
|
||||
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
|
||||
%col_choose = randperm(N,col);
|
||||
%FAR_model = FAR_model(col_choose,:);
|
||||
sparse_signal = zeros(M,N);
|
||||
block = randperm(N,block_sparsity);
|
||||
sparse_signal(:,block) = exp(1i*2*pi*rand(M,block_sparsity));
|
||||
y = FAR_model * sparse_signal(:);
|
||||
cvx_begin
|
||||
variable x(M,N) complex
|
||||
norm21 = 0;
|
||||
for i = 1:N
|
||||
norm21 = norm21 + norm(x(:,i));
|
||||
end
|
||||
minimize(norm21)
|
||||
subject to
|
||||
FAR_model * x(:) == y
|
||||
cvx_end
|
||||
if norm(x(:)-sparse_signal(:))<tol
|
||||
success_count = success_count+1;
|
||||
end
|
||||
end
|
||||
result(block_sparsity) = success_count/trial;
|
||||
end
|
||||
%%
|
||||
clc;
|
||||
M = 4;
|
||||
N = 128;
|
||||
%block_sparsity = 1;
|
||||
tol = 1e-5;
|
||||
trial = 30;
|
||||
epi = 0.02;
|
||||
result2 = zeros(2,25);
|
||||
col = 128;
|
||||
Prob = [1/3,1/3,1/6,1/6];
|
||||
for block_sparsity = 4:18
|
||||
success_count = 0;
|
||||
success_count2 = 0;
|
||||
for loop = 1:trial
|
||||
FAR_model = zeros(N,M*N);
|
||||
%Cn = randperm(M)-1
|
||||
for n = 0 : N-1
|
||||
Cn = randsrc(1,1,[[0,1,2,3];Prob]);
|
||||
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
|
||||
%col_choose = randperm(N,col);
|
||||
%FAR_model = FAR_model(col_choose,:);
|
||||
sparse_signal = zeros(M,N);
|
||||
block = randperm(N,block_sparsity);
|
||||
sparse_signal(:,block) = exp(1i*2*pi*rand(M,block_sparsity));
|
||||
y = FAR_model * sparse_signal(:);
|
||||
cvx_begin
|
||||
variable x(M,N) complex
|
||||
norm21 = 0;
|
||||
for i = 1:N
|
||||
norm21 = norm21 + norm(FAR_model(:,M*i-3:M*i)*x(:,i));
|
||||
end
|
||||
minimize(norm21)
|
||||
subject to
|
||||
FAR_model * x(:) == y
|
||||
cvx_end
|
||||
err1 = 0;
|
||||
for i =1:N
|
||||
err1 = err1 + norm(FAR_model(:,M*i-3:M*i)*(x(:,i)-sparse_signal(:,i)));
|
||||
end
|
||||
if err1<tol
|
||||
success_count2 = success_count2 +1;
|
||||
end
|
||||
if norm(x(:)-sparse_signal(:))<tol
|
||||
success_count = success_count+1;
|
||||
end
|
||||
end
|
||||
result2(1,block_sparsity) = success_count/trial;
|
||||
result2(2,block_sparsity) = success_count2/trial;
|
||||
end
|
||||
|
||||
|
||||
%%
|
||||
|
||||
|
||||
close all;
|
||||
clear all;
|
||||
clc;
|
||||
M = 4;
|
||||
N = 64;
|
||||
%block_sparsity = 1;
|
||||
tol = 1e-5;
|
||||
trial = 50;
|
||||
epi = 0.02;
|
||||
%result = zeros(N,25);
|
||||
%for col = 4:4:128
|
||||
col = 64;
|
||||
block_sparsity = 6;
|
||||
err = 0.1;
|
||||
sigma = 0.5*sqrt(block_sparsity);
|
||||
|
||||
|
||||
|
||||
FAR_model = zeros(N,M*N);
|
||||
%Cn = randperm(M)-1
|
||||
for n = 0 : N-1
|
||||
Cn = floor(rand()*M);
|
||||
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
|
||||
%col_choose = randperm(N,col);
|
||||
%FAR_model = FAR_model(col_choose,:);
|
||||
sparse_signal = zeros(M,N);
|
||||
block = randperm(N,block_sparsity);
|
||||
sparse_signal(:,block) = exp(1i*2*pi*rand(M,block_sparsity));
|
||||
y = FAR_model * sparse_signal(:) + sigma*(randn(N,1)) + 1i*sigma*(randn(N,1));
|
||||
cvx_begin
|
||||
variable x(M,N) complex
|
||||
norm21 = 0;
|
||||
for i = 1:N
|
||||
norm21 = norm21 + norm(x(:,i));
|
||||
end
|
||||
minimize(norm21)
|
||||
subject to
|
||||
norm(FAR_model * x(:) - y)<err
|
||||
cvx_end
|
||||
|
||||
|
||||
x_block_norm = zeros(N,1);
|
||||
x_norm = zeros(N,1);
|
||||
for i = [1:N]
|
||||
x_block_norm(i) = norm(FAR_model(:,M*i-3:M*i)*x(:,i));
|
||||
x_norm(i) = norm(FAR_model(:,M*i-3:M*i)*sparse_signal(:,i));
|
||||
end
|
||||
|
||||
hold on
|
||||
plot(x_block_norm,'--o');
|
||||
plot(x_norm,'-.s');
|
||||
lgh = legend("Estimated","Ground Truth", ...
|
||||
"MF");
|
||||
set(lgh,'interpreter','latex','FontName','Times New Roman')
|
||||
%set(gcf,'interpreter','latex','FontName','Times New Roman')
|
||||
xlabel("\fontname{Times New Roman}Velocity Cell Index");
|
||||
ylabel("\fontname{Times New Roman}Test Statistics \it{T_i}");
|
||||
xlim([0 75]);
|
||||
|
||||
|
||||
|
||||
|
||||
%end
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user