📄 li_xiang.asv
字号:
%没有初始相位的理想程序 正确的格雷码映射
clear;
a2=[0 pi/4 pi/2 3*pi/4 pi -pi/4 -pi/2 -3*pi/4];
a4=[0 0 0;0 0 1;0 1 1;0 1 0;1 1 0;1 0 0;1 0 1;1 1 1];
%%%%%%%%%%%%%%%%%%%%%%%%%
A=[3*pi/4 pi pi/4 pi/2 -pi/4 -pi/2 -3*pi/4 0];%%% A应该是正确的格雷码映射
%%%%%%%%%%%%%%%%%%%%%%%
M=8;
N=1000;%符号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
snr_in_dB=30;%%%%%%%%%%%%%%%%% we can change snr_in_dB' value here
Es=1;
snr=10^(snr_in_dB/10);
%snr=exp(snr_in_dB*log(10)/10);
sgma=sqrt(Es/(sqrt(M))/snr/2);
input=round(rand(1,log2(M)*N));
%theta(1)=0; %初始相位
R1=1;%%不要初始相位
for i=1:3:length(input)-2
if ((input(i)==1)&(input(i+1)==1)&(input(i+2)==1))
del_theta=0;
elseif ((input(i)==0)&(input(i+1)==1)&(input(i+2)==1))
del_theta=pi/4;
elseif ((input(i)==0)&(input(i+1)==1)&(input(i+2)==0))
del_theta=pi/2;
elseif ((input(i)==0)&(input(i+1)==0)&(input(i+2)==0))
del_theta=3*pi/4;
elseif ((input(i)==1)&(input(i+1)==1)&(input(i+2)==0))
del_theta=-pi/4;
elseif ((input(i)==1)&(input(i+1)==0)&(input(i+2)==0))
del_theta=-pi/2;
elseif ((input(i)==1)&(input(i+1)==0)&(input(i+2)==1))
del_theta=-3*pi/4;
elseif ((input(i)==0)&(input(i+1)==0)&(input(i+2)==1))
del_theta=pi;
end
theta(R1)=del_theta+(R1)*3*pi/8;
R1=R1+1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x1=exp(j*theta);
et=x1(1:N);
figure(1);
plot(et);
title('e(t):rotate 3/8pi');
%insert zeros
%%%%%%%%插3个0=4000%%%%%%%%%%%%%%%%%%%%%
for i=0:length(et)-1
etx(i*4+1)=real(et(i+1));
ety(i*4+1)=imag(et(i+1));
for k=i*4+2:i*4+4
etx(k)=0;
ety(k)=0;
end
end
%%%%%%%%%%%%%%%%%%%%%
et_insert_zeros=etx+j*ety;
%%%%%%%%%
%gsm/edge pulse shaping 一个符号周期有4个样点的滤波器系数,个数21
tx=[2.9189e-007 1.888e-005 0.00046755 0.0052743 0.031591 0.11475 0.2828 0.51851 0.75967 0.93598 1 0.93598 0.75967 0.51851 0.2828 0.11475 0.031591 0.0052743 0.00046755 1.888e-005 2.9189e-007];
shaped_et=filter(tx,1,[et_insert_zeros]);
figure(2);
plot(shaped_et);
title('pulse shape');
%%%%%%%%%%%%加噪声
%%%%%%%%%%%%%%%%%%%%%%%%%%%%加高斯噪声%%%%%%%%%%%%%%
I=real(shaped_et);
Q=imag(shaped_et);
for i=1:length(I)
% [gs1,gs2]=gngauss(sgma);
gs1=gngauss(sgma);
I1(i)=I(i)+gs1;
%I1(i+1)=I(i+1)+gs1;
Q1(i)=Q(i)+gs1;
%Q1(i+1)=Q(i+1)+gs1;
end
shaped_et=I1+j*Q1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
c_opt=[0 0 0 0 0 0 0 -0.012622 0.81641 -5.4860 10.0422 -5.4860 0.81641 -0.012622 0 0 0 0 0 0 0];
%%%21个点的接收滤波器系数
equalized_st=filter(c_opt,1,[shaped_et]);%zero forcing filter
%%%%%%
k1=1;
for i=1:4:length(equalized_st)
downsampled_equalizer_output(k1)=equalized_st(i);%underdown sampling
k1=k1+1;
end
downsampled_equalizer_output=downsampled_equalizer_output(6:length(downsampled_equalizer_output));
figure(3);
plot(downsampled_equalizer_output);
title('after receiver with no ISI');
x=real(downsampled_equalizer_output);
y=imag(downsampled_equalizer_output);
for i=1:length(downsampled_equalizer_output);
theta2(i)=atan2(y(i),x(i));
theta3(i)=theta2(i)-(i)*3*pi/8;
end
x2=exp(j*theta3);
x_judge=real(x2);
y_judge=imag(x2);
for i=1:length(x2)
phase1(i)=qxw(x_judge(i),y_judge(i));
end
%%%%%%%%%%%%%5
figure(4);
plot(exp(j*phase1),'.');
%plot(exp(j*phase1));
edge_ma_liu1=[];
for i=1:8
ss(i,:)=[cos(A(i)) sin(A(i))];
end
for i=1:length(phase1)
r(i,:)=[cos(phase1(i)) sin(phase1(i))];
end
for j=1:length(phase1)
for i=1:8
cc(i)=dot(r(j,:),ss(i,:));
end
cc_max=max(cc);
if(cc_max==cc(1))
edge_ma_liu1=[edge_ma_liu1 a4(1,:)];
elseif(cc_max==cc(2))
edge_ma_liu1=[edge_ma_liu1 a4(2,:)];
elseif(cc_max==cc(3))
edge_ma_liu1=[edge_ma_liu1 a4(3,:)];
elseif(cc_max==cc(4))
edge_ma_liu1=[edge_ma_liu1 a4(4,:)];
elseif(cc_max==cc(5))
edge_ma_liu1=[edge_ma_liu1 a4(5,:)];
elseif(cc_max==cc(6))
edge_ma_liu1=[edge_ma_liu1 a4(6,:)];
elseif(cc_max==cc(7))
edge_ma_liu1=[edge_ma_liu1 a4(7,:)];
elseif(cc_max==cc(8))
edge_ma_liu1=[edge_ma_liu1 a4(8,:)];
end
end
%%probility:
ps1=0;
for n=1:length(edge_ma_liu1)
if( input(n)==edge_ma_liu1(n))
continue;
else
ps1=ps1+1;
end
end
p1=ps1/length(edge_ma_liu1)
%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -