📄 main256.m
字号:
clear all;
mul=2;% 12000bit的倍数
M=2;
N=2;
data_num=224;
N_total=224*2*mul;
Lh=6;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
%%%%%%%%%%generate sdbc parameter
FRAME_NUM=N_total/data_num/M;
Cons=1/sqrt(M)*[1 j -1 -j];
Tdata=Cons(2*round(rand(1,N_total))+round(rand(1,N_total))+1);
SNR=20:2:20;
Ps=zeros(1,length(SNR));
data=reshape(Tdata,M,N_total/M);
%for snr=1:1:length(SNR)
%[H ,tx_data]=ofdm_transmitter(FRAME_NUM,M,N,Tx.',SNR(snr));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%% OFDM
ant_num=M;
rx_num=N;
sub_num=256;
dK=8;
pre_ratio=1/8;
fd=5;%hz
deltaT=5e-8;%s
pilot_num=32;
pilot=Cons(2*round(rand(ant_num,pilot_num*FRAME_NUM))+round(rand(ant_num,pilot_num*FRAME_NUM))+1);
[pilot_position, Tx_data]=OFDM_tx1(pilot,pilot_num,data,data_num,dK,ant_num,sub_num,pre_ratio,FRAME_NUM);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 channel
Power = 10.^([ 0 -8 -16 -24 -34 -40 ]'./10); % 6径信道每条径的功率
Delay = 2/100*[ 0 100 200 300 400 500 ]'; % 最大多径时延 10us 室外信道
NS=sub_num*(1+pre_ratio)*FRAME_NUM+max(Delay);
R=channel(fd,deltaT,NS,M,N,Power,Delay,Tx_data);
for snr=1:1:length(SNR)
SNR(snr)
RD=zeros(size(R));
Es=zeros(1,N);
Noise=zeros(size(R));
for rn=1:1:N
Es(rn)=(R(rn,:)*R(rn,:)')/length(R(rn,:));
Noise(rn,:)=sqrt(Es(rn)/(10^(SNR(snr)/10))/2)*(randn(1,length(R))+randn(1,length(R))*i);
end
RD=R+Noise;
%%%%%%%%%%receiver
[H,tx_data]=OFDM_rx(M,N,FRAME_NUM,sub_num,pre_ratio,pilot,RD,pilot_position,Lh,pilot_num,data_num);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
%H=rand(M,length(Tx)/ds)+rand(M,length(Tx)/ds)*i;
Rx=zeros(N_total,1);
for k=1:1:length(tx_data)
Rd=tx_data((k-1)*ds+1: k*ds,:);
h=reshape(H(k*ds,:),M,N);
Rx(dt*(k-1)+1:dt*k,1)=decode_stbcMO(Rd,M,N,index,h,Cons);
end
Rdata=reshape(Rx,1,N_total);
%R(10:100)=1;
%R(N_total-100:N_total)=1;
%xa=1:1:N_total;
%;semilogy(xa,abs(R-Tdata));
error=0;
for k=1:1:N_total
if Rdata(k)~=Tdata(k);
error=error+1;
end
end
Ps(snr)=error/N_total;
end
Ps
%ratio(SNR/2-4)=error/N_total;
%end
semilogy(SNR,Ps);
hold on ;
grid on ;
xlabel('Eb/No (dB)','FontSize',10);
ylabel('ZF','FontSize',10);
title('系统ZF~Eb/No性能曲线');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -