• 大小: 11KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签: OFDM  MIMO  LS算法  

资源简介

这个是基于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

评论

共有 条评论