資源簡介
這個是基于LS最優算法的MIMO-OFDM通信系統的信道估計的代碼,有仿真結果,及詳細的注釋。
代碼片段和文件信息
%OFDM系統參數設置
clc;
clear?all;
NFFT=64;?????????????????????????????%FFT長度
G=0;?????????????????????????????????%保護間隔長度
M_ary=4;?????????????????????????????%進制數
P_A=sqrt(2);?????????????????????????%導頻符號的幅度
D_t=4;???????????????????????????????%時域內導頻序列的間隔,即一個訓練序列與另一個訓練序列的間隔
t_a=50*10^(-9);??????????????????????%HiperLAN/2中的采樣間隔
%蒙特卡洛信道參數設置
symbol_duration=NFFT*t_a;????????????%一個OFDM信號的時間
number_of_summations=40;?????????????%蒙特卡洛方法中的調和系數
f_dmax=50.0;?????????????????????????%最大多普勒頻移
load?h_decimation.am?-ascii;?????????%數據文件,存儲多徑信道p[k]與套k參數
h11_initial=h_decimation;????????????%h11:發送天線1到接收天線1信道參數
h12_initial=h_decimation;????????????%h12:發送天線1到接收天線2信道參數
h21_initial=h_decimation;????????????%h21:發送天線2到接收天線1信道參數
h22_initial=h_decimation;????????????%h22:發送天線2到接收天線2信道參數
N_P=length(h_decimation);
NofOFDMSymbol=1000;??????????????????%OFDM符號個數,包括導頻OFDM符號與數據OFDM符號
No_Of_OFDM_Data_Symbol=NofOfdmsYMBOLceil(NofOFDMSymbol/D_t);%數據OFDM符號個數
length_data=(No_Of_OFDM_Data_Symbol)*NFFT;%總的數據長度,例如采用4QAM則是四進制數據的長度
Number_Relz=100;?????????????????????%循環數
ser_relz=[];?????????????????????????%存儲每個循環的誤碼率
for?number_of_relialization=1:Number_Relz;%循環開始
%產生信道中的隨機系數
u11=rand(N_Pnumber_of_summations);
u12=rand(N_Pnumber_of_summations);
u21=rand(N_Pnumber_of_summations);
u22=rand(N_Pnumber_of_summations);
%發送的二進制比特流
source_data1=randint(length_data2);
source_data2=randint(length_data2);
%轉換為四進制信號
symbols1=bi2de(source_data1);
symbols2=bi2de(source_data2);
%進行4QAM映射
QASK_Symbol1=dmodce(symbols111‘qask‘M_ary);
%存放第一個天線發送的數據
QASK_Symbol2=dmodce(symbols211‘qask‘M_ary);
%存放第二個天線發送的串行數據
%天線IIFFT前的信號,為IFFT點的并行數據,即將串行數據轉換為并行數據
Data_Patterm1=[];%為IFFT轉唄輸入信號
m=0;
for?i=0:No_Of_OFDM_Data_Symbol-1;
????QASK_tem=[];
????for?n=1:NFFT;
????????QASK_tem=[QASK_temQASK_Symbol1(i*NFFT+n)];
????end;
????Data_Pattern1=[Data_Pattern1;QASK_tem];
????clear?QASK_tem;
end;
%天線2IFFT前的信號,為IFFT點的并行數據,即將串行數據轉換為并行數據
Data_Pattern2=[];
m=0;
for?i=0:No_Of_OFDM_Data_Symbol-1;
????QASK_tem=[];
????for?n=1:NFFT;
????????QASK_tem=[QASK_temQASK_Symbol2(i*NFFT+n)];
????end;
????Data_Pattern2=[Data_Pattern2;QASK_tem];
????clear?QASK_tem;
end;
%天線1的導頻信號
PP_A1=[];
for?m=0:NFFT-1;
????PP_A1=[PP_A1P_A*exp(j*D_f*pi*(m)^2/NFFT)];
end;
%FFT矩陣
F=[];
for?k=0:NFFT-1;
????W_tem=[];
????for?n=0:NFFT-1;
????????W_tem=[W_temexp(-j*2*pi*n*k/NFFT)];
????end;
????F=[F;W_tem];
end;
%LS估計系數
PP=[diag(PP_A1)*F(:1:n_p)diag(PP_A2)*F(:1:N_P)];
%參看Q
Q=inv(PP*PP);%%%%%%%%%%%%%%%%%%%%%%%%參看式5—80中的QQ的逆
%天線1發送信號。將導頻插入并行OFDM數據,一個塊狀導頻OFDM符號后3個數據
%OFDM符號
TS1_BeforeIFFT=Insert_PilotSymbol(PP_A2Data_Pattern2D_tNofOFDMSymbolNFFT);
ser_without_isic=[];
snr_min=0;%最小性噪比
snr_max=50;%最大性噪比
step=5;%信噪比步長
for?snr=snr_min:step:snr_max;%信噪比循環
????%對第一個發送天線
????rsl1_frame=[];
????%存放并行的經過多徑與加性高斯白噪聲信道的第一個發送天線到第一個接收天線的每個OFDM符號
????rsl2_frame=[];
????%存放并行的經過多徑與加性高斯白噪聲信道的第一個發送天線到第二個接收天線的每個OFDM符號
????initial_time=0;%初始時間
????for?i=0:NofOFD
評論
共有 條評論