宽带频谱感知求助~Matlab
现在正在仿一篇宽带频谱感知的论文,仿真结果一直对不上。文章是"Cyclic Feature Detection With Sub-Nyquist Sampling for Wideband Spectrum Sensing",作者是Zhi Tian。
希望有朋友能帮忙指点一二,定重谢!!!
本人QQ619992198,请大家帮帮忙,谢谢!
这是我的代码
x=bPSK(10^7,375*10^6,10^9,64,1);
L=200;
N=length(x)/L;
%%
Rx=zeros(N,N);
for l=1:1:L
Rx=x((l-1)*N+1:l*N)'*x((l-1)*N+1:l*N)+Rx;
end
Rx=Rx/L;
R=zeros(N,N);
for n=1:1:N
R(1:N-n+1,n)=diag(Rx,n-1);
end
%%
F=zeros(N,N);
for v=0:1:N-1
for b=0:1:N-1
F(v+1,b+1)=exp(-j*2*pi*v*b/N);
end
end
Rxc=zeros(N,N);
H=zeros(N^2,N*(N+1)/2);
B=generate_B(N);
for v=0:1:N-1
Dv=zeros(N,N);
Dv(v+1,v+1)=1;
for a=0:1:N-1
for n=0:1:N-1
Gv(a+1,n+1)=exp(-j*2*pi*a*(n+v/2)/N)/N;
end
end
Rxc=Gv*R*Dv+Rxc;
H=kron(Dv',Gv)*B+H;
end
Sxc=Rxc*F;
sxc=reshape(Sxc,N^2,1);
m=2:2:30;
for i=1:1:length(m)
M=m(i);
A=randn(M,N);
A=A/sqrt(M);
for t=1:1:100;
z=zeros(M,L);
for l=1:1:L
z(:,l)=A*x((l-1)*N+1:l*N)';
end
Rz=zeros(M,M);
for l=1:1:L
Rz=z(:,l)*z(:,l)'+Rz;
end
Rz=Rz/L;
Qm=generate_Q(M);
rz=Qm*reshape(Rz,M^2,1);
%%
Pn=generate_P(N);
fai=Qm*kron(A,A)*Pn;
In=eye(N);
W=kron(inv(F'),In);
tau=fai*pinv(H)*W;
%%
cvx_begin quiet
variable sx(N^2) complex
minimize square_pos(norm(rz-tau*sx,2))+1.2*norm(sx,1)
cvx_end
MSE(t,i)=norm(sx-sxc,2)^2/norm(sxc,2)^2;
end
end
mse=mean(MSE);