MIMO-OFDM系统中信道估计的快速谐波搜索技术(Matlab代码实现)

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

目前,由OFDM技术与空时编码技术相融合而成的MIMO-OFDM技术已经引起了通信领域的广泛关注和研究.在无线通信系统中,MIMO-OFDM技术不仅能够有效地增强数据传输速率,增加系统传输容量,而且能有效地抑制多径衰落和干扰.信道估计问题是MIMO-OFDM系统的一项关键技术问题,因此,本论文针对MIMO-OFDM系统的信道估计问题展开研究. 

📚2 运行结果

主函数部分代码:

clc;
clear all;
close all;
​
global ofdm chan
global xb 
​
  %======================================================================
    %                               Inputs
    %======================================================================
    % Input parameters are (if not set the defalt value will be set)
        % ofdm.Nb      = 1e2;                 % number of blocks
        % ofdm.Nt      = 2;                   % number of transmit antennas    
        % ofdm.Nr      = 4;                   % number of receive antennas
        % ofdm.K       = 128;                 % number of subcarriers    
        % ofdm.G       = 1/4;                 % Guard interval percentage    
        % ofdm.Mod     = 4;                   % QPSK Modulation
        % ofdm.PSpace  = 1;                   % subcarrier space between two pilots
    % channel parameters
        % chan.SNR_dB  = 15;                  % signal to noise ratio
        % chan.L       = 6;                   % number of taps in each transmit-receive antenna
    % control parameters
        % ofdm.ifDemodulateData = 1;          % (1,0) if 1, the code demodulates the transmitted via LS data and calculates the BER
        % ofdm.ifDisplayResults = 1;          % (1,0) if 1, display the results in the command window
    %======================================================================
    %                               Outputs
    %======================================================================
    % The main outputs are listed below
        % chan.MSE_Theory           % Minimum squared error of LSE channel estimation in theory
        % chan.MSE_Simulation       % Minimum squared error of LSE channel estimation in simulations
        % ofdm.BER                  % Bit Error Rate if ofdm.ifDemodulateData = 1
​
  
    
    
    SNR_dBV     = 3:3:15;            % vector of SNR values in dB
    SNR_dBVL    = length(SNR_dBV);   % length of SNR vector
    nMonteCarlo = 5;%e2;            % number of Monte Carlo to find the value of each point in the figure
    ofdmIn.Nt   = 2;                 % number of transmit antennas
    ofdmIn.Nr   = 3;                 % number of recieve antennas
    ofdmIn.ifDisplayResults    = 0;  % turn off the display
    % other parameters of ofdm can also be set. see help of MIMO_OFDM_LSE_CHAN_EST
%% Outputs
    MSE_CHAN_SIM = zeros(nMonteCarlo,SNR_dBVL);     % MSE of LSE channel estimation in simulation
    MSE_CHAN_THR = zeros(nMonteCarlo,SNR_dBVL);     % MSE of LSE channel estimation in theory
    MSE_CHAN_BER = zeros(nMonteCarlo,SNR_dBVL);     % BER of the MIMO OFDM with LSE channel estimation
    
    
    
    
%% Parameters
    % system parameters (independent)
    ofdm.Nb      = 1e2;                 % number of blocks
    ofdm.Nt      = 2;                   % number of transmit antenna    
    ofdm.Nr      = 4;                   % number of receive antenna
    ofdm.K       = 128;                 % number of subcarriers    
    ofdm.G       = 1/4;                 % Guard interval percentage    
    ofdm.Mod     = 4;                   % QPSK Modulation    
    ofdm.PSpace  = 1;                   % pilot space between two pilots
    
    % channel parameters
    chan.SNR_dB  = 15;                  % signal to noise ratio
    chan.L       = 6;                   % number of channel taps between each transmit-receive antenna
    
    % control parameters
    ofdm.ifDemodulateData = 1;          % (1,0) if 1, the code demodulates the transmitted data via LS algorithm, and calculates the BER
    ofdm.ifDisplayResults = 1;          % (1,0) if 1, displays the results in the command window
    
​
    % dependent parameters
    ofdm.PPos    = 1:(ofdm.PSpace+1):ofdm.K;    % OFDM pilot positionss
    ofdm.PL      = length(ofdm.PPos);           % Length of pilot subcarriers
    ofdm.DPos    = setxor(1:ofdm.K,ofdm.PPos);  % OFDM data positions
    ofdm.DL      = length(ofdm.DPos);           % Length of data subcarriers
    ofdm.BER     = 0;                           % set the BER to zero
    chan.sigma   = sqrt(10^(-0.1*chan.SNR_dB)); % noise power
    
    % normalization of the energy for the constelation        
        temp         = 0:ofdm.Mod-1;           % possible symbols
        temp         = qammod(temp,ofdm.Mod);  % modulated symbols
        temp         = abs(temp).^2;           % power of each point in the constellation
        temp         = mean(temp);             % average energy of the constellation
        ofdm.ModNorm = 1/sqrt(temp);           % normaliztion factor
    
%% Data generation
    % symbol generation
    ofdm.d      = randi(ofdm.Mod,ofdm.DL,ofdm.Nb,ofdm.Nt)-1;   % generation of a DL by nB by Nt matrix of data symbols
    
    
    figure,
    stem(ofdm.d(:,:,1))
    xlabel('Sample')
    ylabel('Data Gen')
    
%% data Modulation
    ofdm.dMod   = zeros(ofdm.K,ofdm.Nb,ofdm.Nt);    % memory allocation for the ofdm blocks transmitted from each Tx antenna
    if ofdm.DL > 0
        for nt = 1 : ofdm.Nt
            ofdm.dMod(ofdm.DPos,:,nt) = ofdm.ModNorm*qammod(ofdm.d(:,:,nt),ofdm.Mod);
        end
    end
​

🎉3 参考文献

​[1]曹松景. MIMO-OFDM系统中信道估计方法的研究[D]. 重庆大学.

点击文章左下角【阅读全文】

部分理论引用网络文献,若有侵权联系博主删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值