📄 vcscpxiaoyul.m
字号:
%虚拟子载波 条件:Mp-L>MP
clear all
j=sqrt(-1);
N=32;P=26;e=200;P0=2;L=4;M=3;D=3;p=N+D;%N 载波数 ,P采用;p 加循环前最后,M符号数;D循环前最
h(1)=0.158-0.664j;
h(2)=-0.198+0.267j;
h(3)=-0.325+0.197j;
h(4)=-0.378-0.245j;
h(5)=-0.278-0.003j;
h=[h(1) h(2) h(3) h(4) h(5)].';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%IFFT
w=exp(-j*2*pi/N);
for i=1:N;
for s=1:N;
Wn(i,s)=N^(-1/2)*w^[(-1)*(i-1)*(s-1)];
end
end
for i=1:N
t(i)=w^(-1)*P0*(i-1);%1*N
end
T=diag(t);%N*N
W=T*Wn(:,1:P);%N*P
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Tcp
Wp=W(N-D+1:N,:);%D*N
Wcp=[Wp;W];%p*P
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Im=eye(M);
G=kron(Im,Wcp);%Mp*MP W临时使用
H=Toeplitz([h(5);zeros(M*p-L-1,1)],[h(5) h(4) h(3) h(2) h(1) zeros(1,M*p-L-1)]);%Mp-L*Mp
A=H*G;%Mp-L*MP
%%%%%%%%%%%%%%%%%%%%%%%%%%
dB=5:5:40
for k=1:length(dB)
ADD=0;
for Nm=1:100
for i1=1:e
%%%%%%%%%%%%%%%%%%%%%%%%%%%
X=rand(M*P,1);%生成32维BPSK码
for m=1:M*P
if X(m,1)>(0.5)
X(m,1)=1;
else X(m,1)=-1;
end
end
Y(:,i1)=A*X;%72*1;
SNR=[];
n=randn(size(Y(:,i1)))+sqrt(-1)*randn(size(Y(:,i1)));%产生随机噪声
n=n/norm(n)*10^(-dB(k)/10)*norm(Y(:,i1));
SNR=[SNR 10*log10(norm(Y(:,i1))/norm(n))];
Y(:,i1)=Y(:,i1)+n;
end
%%%%%%%%%%%%%%%%%%%%%%%%
%Ry=Y*Y'/e;
[u,s,v]=svd(Y);%奇异值分解
Un=u(:,M*P+1:M*p-L);%M*(Q+D)-L
Q=0;
for i=1:M*(p-P)-L
gi=Un(:,i).';
Gi=[0 0 0 0 gi;0 0 0 gi 0;0 0 gi 0 0;0 gi 0 0 0;gi 0 0 0 0];%5*80
qi=(Gi*G)*(Gi*G)';%5*5
Q=Q+qi;
end
[U1,S1,V1]=svd(Q); % solve equation Ah=0 by SVD
hb=U1(:,5);
hb_h=mean(hb./h);
hb1=hb/hb_h;
ADD=ADD+sqrt((h-hb1)'*(h-hb1))/sqrt(h'*h);
%%%%%%%%%%%%%%%
end
squ_err_h(k)=500^(-1/2)*sqrt(ADD);
end
figure(1)
dB=5:5:40
plot(dB,squ_err_h,'-*')
hold on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -