clear all;
close all;
fprintf('OFDM 信道估计仿真');
carrier_count=64;%-----------载波数目
num_symbol=50;%--------------OFDM 符号个数
Guard=8;%--------------------循环前缀
pilot_Inter=8;%--------------导频间隔
modulation_mode=16;%---------调制方式
SNR=[0:2:20];%-------------信噪比取值
NumLoop=15;%-----------------循环次数
num_bit_err=zeros(length(SNR),NumLoop);
num_bit_err_dft=zeros(length(SNR),NumLoop);
num_bit_err_ls=zeros(length(SNR),NumLoop);
MSE=zeros(length(SNR),NumLoop);
MSE1=zeros(length(SNR),NumLoop);
MSE2=zeros(length(SNR),NumLoop);
%%%%%%%%%%%%%%%%%%%%%%% 主 程 序 循
环%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for c1=1:length(SNR)
fprintf(' 仿真信噪比为%f',SNR(c1));
for num1=1:NumLoop
%---------------产生发送的随机序列——————————————-
BitsLen=carrier_count*num_symbol;
BitsTx=randint(1,BitsLen);
%---------------符号调制---------------------------------------
Modulated_Sequence=qammod(BitsTx,modulation_mode);
%---------------导频格式---------------------------------------
pilot_len=carrier_count;
pilot_symbols=round(rand(1,pilot_len));
for i=1:pilot_len
if pilot_symbols(1,i)==0
pilot_symbols(1,i)=pilot_symbols(1,i)-1;
else
pilot_symbols(1,i)=pilot_symbols(1,i);
end
end
pilot_symbols=pilot_symbols';
%----------------计算导频和数据数目----------------------------
num_pilot=ceil(num_symbol/pilot_Inter);
if rem(num_symbol,pilot_Inter)==0
num_pilot=num_pilot+1;
end
num_data=num_symbol+num_pilot;
%----------------导频位置计算----------------------------------