📄 myresult.m
字号:
clear all;
set_sim_consts;
global sim_consts;
error = 0 ;
max = 1 ;
for sim_num = 1:max
sim_num
sim_consts.gu = zeros(8,4);
m=2;ka=8;N=44;w=4;Q=16;
%m refer to the number of user
snr=-1;
y=N*Q+w-1;
hsig.ka(1,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(2,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(3,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(4,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(5,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(6,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(7,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
hsig.ka(8,:) = Rayleigh_Doppler_multiPath(2000,120,0,0.000675,0.00000078125,1.28,[0,781,1563,2344],[0,-3,-6,-9]);
% s=send_series;
s1 = 2*randint(44,1)-1 + i * (2*randint(44,1)-1);
s2 = 2*randint(44,1)-1 + i * (2*randint(44,1)-1);
sp1 = s1*ovsf(1);
sp2 = s2*ovsf(2);
sp = zeros(22,16);
sp = sp1 + sp2 ;
for kk = 1:14
ddss = 2*randint(44,1)-1 + i * (2*randint(44,1)-1) ;
sp = sp + ddss*ovsf(kk+2);
end
send = zeros(864,1);
for idx = 1:22
send((idx-1)*16+1:idx*16) = sp(idx,:);
end
for idx = 23:44
send((idx-23)*16+1+496:(idx-22)*16+496) = sp(idx,:);
end
send(353:480) = 2*midamble_1;
for idx = 1:8
t(idx,:) = send'.*abs(hsig.ka(idx,:));
power=0;
for i=1:864
tempp=t(idx, i);
power=power+tempp*tempp';
end;
power_s = power/864;
tempp=10^(snr/10);
sigma=sqrt(power_s/tempp);
t(idx,:) = t(idx,:) + normrnd(0,sigma,1,864) + j*normrnd(0,sigma,1,864);
end
for idx = 1:8
rm(idx,:) = t(idx,353:483);
end
ry1 = zeros(8,355);
for idx = 1:8
ry1(idx,:)=t(idx,1:355);
end
y1 = [ry1(1,:) ry1(2,:) ry1(3,:) ry1(4,:) ry1(5,:) ry1(6,:) ry1(7,:) ry1(8,:) ]';
ry2 = zeros(8,355);
for idx = 1:8
ry2(idx,:)=t(idx,497:851);
end
y2 = [ry2(1,:) ry2(2,:) ry2(3,:) ry2(4,:) ry2(5,:) ry2(6,:) ry2(7,:) ry2(8,:) ]';
a_1 = a_mid_1;
b_1 = inv(a_1'*a_1)*a_1';
for idx = 1:8
sim_consts.gu(idx,:)=(b_1*rm(idx,:)')';
end
a= A_gen_1;
h=a'*a;
digh=diag(diag(h));
dighinv=inv(digh);
mt=chol(h);
hinv=inv(mt);
htinv=inv(mt');
s_zf1=hinv*htinv*digh*dighinv*a'*y1;
s_zf2=hinv*htinv*digh*dighinv*a'*y2;
rs1 = zeros(44,1);
rs2 = zeros(44,1);
for i = 1:22
rs1(i) = s_zf1(2*i-1);
rs1(i+22) = s_zf2(2*i-1);
rs2(i) = s_zf1(2*i);
rs2(i+22) = s_zf2(2*i);
end
rs1 = 2*(real(rs1)>0)-1 + j*(2*(imag(rs1)>0)-1);
rs2 = 2*(real(rs2)>0)-1 + j*(2*(imag(rs2)>0)-1);
error1 = sum((rs1-s1)~=0) + sum((rs2-s2)~= 0)
error = error1 + error ;
clear m ka N w Q snr y hsig sp1 sp2 sp send sigma idx ...
t rm ry1 ry2 a_1 b_1 a h digh dighinv mt hinv htinv s_zf1...
rs1 rs2 ddss i kk power power_s s1 s2 x y1 y2 s_zf2 tempp ;
end
error/(88*max)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -