当前位置: 首页 > article >正文

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]. 重庆大学.

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

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


http://www.kler.cn/a/13550.html

相关文章:

  • Python数据结构与算法-RAS算法(p96)
  • Mysql列的类型定义(日期和时间类型)
  • 【LeetCode】102.二叉树的层序遍历
  • 幽灵空白节点
  • Oracle学习笔记
  • ChatGPT | 申请与使用new bing的实用教程
  • java 26
  • Python从入门到精通8天(装饰器的基本使用)
  • FFmpeg命令行解析
  • 最重要的 JVM 参数总结
  • 【软考数据库】第二章 程序语言基础知识
  • 论文笔记:基于并行注意力 UNet的裂缝检测方法
  • 2023软考中级《软件设计师》(备考冲刺版) | 操作系统
  • goland 启动go module 之后goland标红,unresolved reference 无法正常追踪代码
  • 工单管理系统的好处
  • 混淆矩阵的输出,异常检测可视化(针对二分类)
  • 数据结构:什么是堆,和二叉树有什么关系
  • 第2章 时间空间复杂度计算
  • 怎么压缩图片的体积大小,4款软件分享
  • 微信小程序开发--利用和风天气API实现天气预报小程序