📄 main.m
字号:
clear;
clc;
N=32;
CP=8;
timer=1000;
packetnum=3;
snr_db=15;
MSE_ML=zeros(1,length(snr_db));
MSE_MA=zeros(1,length(snr_db));
LR_ML=zeros(1,length(snr_db));
LR_MA=zeros(1,length(snr_db));
weight=1;
freq=0.04;
multi_path=0;
range=(CP+(CP/2)+1):(CP+(CP/2)+2*N+CP);%(CP+2):(CP+1+2*N+CP); %% 2N+CP
Pos=N+(CP/2)+1;%N+CP;
tim=round(clock)
for snr=1:length(snr_db)
for ttt=1:timer
%%% TX %%%
clear data_tx;
clear out_ifft;
clear ps_out;
data_tx=sign(unidrnd(2,packetnum,N)-1.5);
out_ifft(1,:)=ifft(data_tx(1,:));
out_ifft(2,:)=ifft(data_tx(2,:));
out_ifft(3,:)=ifft(data_tx(3,:));
ps_out=[out_ifft(1,N-CP+1:N),out_ifft(1,:),out_ifft(2,N-CP+1:N),out_ifft(2,:),out_ifft(3,N-CP+1:N),out_ifft(3,:)];
%%% Channel %%%
clear tx_power;
clear variance;
clear timeoffset_start;
clear timeoffset_end;
clear rx1;
txpower=sum(ps_out.*conj(ps_out))/length(ps_out);
variance=sqrt(txpower/(2*10^(snr_db(snr)/10)));
%%% Frequency offset and initial phase and multipath %%%
if multi_path==1
path_num=3;
delay_max=CP;
[rx1]=channel(ps_out,path_num,delay_max);
else
rx1=ps_out;
end
rx1=rx1+variance*(randn(1,length(rx1))+i*randn(1,length(rx1)));
clear pha;
clear freq_time;
clear freq_offset;
clear rx;
pha=rand*2*pi;
freq_time=1:length(rx1);
freq_offset=freq*freq_time;
rx=rx1.*exp(j*((2*pi*freq_offset)/N+pha));
clear SymbolTiming;
clear RL;
clear Dis;
[RL]=MA(N,CP,rx);
[ggg,SymbolTiming]=max(RL(range));
Dis=abs(Pos-SymbolTiming);
MSE_MA(snr)=MSE_MA(snr)+Dis^2;
if Dis~=0
LR_MA(snr)=LR_MA(snr)+1;
end
end
tim=round(clock);
snr_db(snr);
MSE_MA(snr)=MSE_MA(snr)/timer;
LR_MA(snr)=LR_MA(snr)/timer;
end
plot(snr_db,LR_MA(:),'or-')
tim=round(clock)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -