【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现)

2024-01-21

???????????????? 欢迎来到本博客 ❤️❤️????????

????博主优势: ???????????? 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️ 座右铭: 行百里者,半于九十。

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

????3 参考文献

????4 Matlab代码及文章


????1 概述

未来移动通信的滤波器组多载波调制方案

摘要:未来的无线系统将具有广泛的可能用例。这需要对可用的时频资源进行灵活分配,而传统的正交频分复用(OFDM)很难实现这一点。因此,需要对OFDM进行修改,例如窗口化或滤波。另一种选择是采用不同的调制方案,如滤波器组多载波(FBMC)。在本文中,我们提供了一个统一的框架,讨论和评估了FBMC,并将其与基于OFDM的方案进行了比较。我们的研究不仅基于模拟,还通过真实世界的测试平台测量和试验进行了实证,我们展示了FBMC所面临的主要挑战之一——多天线和信道估计可以被有效处理。此外,我们推导了双选择信道中的信号干扰比的闭式解,并表明在许多实际情况下,单点均衡器是足够的。

关键词:FBMC,OQAM,OFDM,波形,MIMO,信道估计,时频分析,测量

未来的移动系统将具有高度异质性,并具有广泛的可能用例,从增强型移动宽带(eMBB)到增强型机器类型通信(eMTC)再到车载通信中的超可靠低延迟通信(URLLC)[1]–[5]。为了有效支持这些多样化的用例,我们需要对可用的时频资源进行灵活分配,如图1所示。在科学界和标准化组织内部都有关于下一代移动通信系统应该使用哪种调制格式的热烈讨论[6]–[9]。最终,3GPP决定他们将在第五代(5G)移动通信中继续使用正交频分复用(OFDM)(做了一些小的修改)[10],[11]。虽然从OFDM切换到其他方案不会带来数量级的性能提升,但仍然重要进行研究,因为调制格式是每个通信系统的核心,决定了支持的用例。

在本文中,我们将OFDM与滤波器组多载波(FBMC)进行比较[12]–[14],后者具有更好的频谱特性。FBMC存在不同的变体,但我们将主要关注偏移正交振幅调制(OQAM)[15],因为它提供了最高的频谱效率。OQAM有不同的名称,如交错多音和余弦调制多音[13],但本质上都是一样的[16]。详细文章见第4部分。

???? 2 运行结果

部分代码:

% Sampling rate: should approximately match the power delay profile of the
% channel and must be larger than "SubcarrierSpacing*NumberOfSubcarriers".
SamplingRate                = 15e3*14*14;
dt                          = 1/SamplingRate;

% Simulation parameters
Simulation_SNR_OFDM_dB           = [-5:2.5:30];                           % SNR for OFDM in dB. The average transmit power of all methods is the same! However, the SNR might be different due to filtering (in FOFDM and UFMC) or because a different bandwidth is used (different subcarrier spacing or different number of subcarriers).
Simulation_MonteCarloRepetitions = 1000;                                % Number of Monte Carlo repetitions over which we take the average

% Channel parameters
Channel_Velocity_kmh         = 130;                                     % Velocity in km/h. Note that [mph]*1.6=[kmh] and [m/s]*3.6=[kmh]
Channel_PowerDelayProfile    = 'VehicularA';                            % Power delay profile, either string or vector: 'Flat', 'AWGN', 'PedestrianA', 'PedestrianB', 'VehicularA', 'VehicularB', 'ExtendedPedestrianA', 'ExtendedPedestrianB', or 'TDL-A_xxns','TDL-B_xxns','TDL-C_xxns' (with xx the RMS delay spread in ns, e.g. 'TDL-A_30ns'), or [1 0 0.2] (Self-defined power delay profile which depends on the sampling rate)
Channel_DopplerModel         = 'Jakes';                                 % Which Doppler model: 'Jakes', 'Uniform', 'Discrete-Jakes', 'Discrete-Uniform'. For "Discrete-", we assume a discrete Doppler spectrum to improve the simulation time. This however only works accuratly if the number of samples and the velocity is sufficiently high.
Channel_CarrierFrequency     = 2.5e9;                                   % Carrier Frequency (Hz)

% General modulation paramters
QAM_ModulationOrder          = 64;                                      % QAM sigal constellation order: 4, 16, 64, 256, 1024,...

% FBMC parameters
FBMC_NumberOfSubcarriers     = 24;                                      % Number of subcarriers
FBMC_NumberOfSymbolsInTime   = 30;                                      % Number FBMC symbols in time
FBMC_SubcarrierSpacing       = 15e3;                                    % Subcarrier spacing (Hz)
FBMC_PrototypeFilter         = 'Hermite-OQAM';                          % Prototype filter (Hermite, PHYDYAS, RRC) and OQAM or QAM.
FBMC_OverlappingFactor       = 4;                                       % Overlapping factor, 2,3,4,...

% OFDM parameters
OFDM_NumberOfSubcarriers     = 24;                                      % Number of subcarriers
OFDM_NumberOfSymbolsInTime   = 14;                                      % Number OFDM symbols in time
OFDM_SubcarrierSpacing       = 15e3;                                    % Subcarrier spacing (Hz)
OFDM_CyclicPrefixLength      = 1/(14*OFDM_SubcarrierSpacing);           % Length of the cyclic prefix (s)

% WOLA parameters
WOLA_NumberOfSubcarriers     = 24;                                      % Number of subcarriers
WOLA_NumberOfSymbolsInTime   = 14;                                      % Number WOLA symbols in time
WOLA_SubcarrierSpacing       = 15e3;                                    % Subcarrier spacing (Hz)
WOLA_CyclicPrefixLength      = 0;                                       % Length of the cyclic prefix (s) to combat the channel
WOLA_WindowLengthTX          = 1/(14*2*WOLA_SubcarrierSpacing);         % Length of the window overlapping (s) at the transmitter
WOLA_WindowLengthRX          = 1/(14*2*WOLA_SubcarrierSpacing);         % Length of the window overlapping (s) at the receiver

% FOFDM parameters
FOFDM_NumberOfSubcarriers     = 24;                                     % Number of subcarriers
FOFDM_NumberOfSymbolsInTime   = 14;                                     % Number FOFDM symbols in time
FOFDM_SubcarrierSpacing       = 15e3;                                   % Subcarrier spacing (Hz)
FOFDM_CyclicPrefixLength      = 0;                                      % Length of the cyclic prefix (s) to combat the channel
FOFDM_FilterLengthTX          = 0.2*1/(FOFDM_SubcarrierSpacing);        % Length of the transmit filter (s)
FOFDM_FilterLengthRX          = 0.2*1/(FOFDM_SubcarrierSpacing);        % Length of the receive filter (s)
FOFDM_FilterCylicPrefixLength = 1/(14*FOFDM_SubcarrierSpacing);         % Length of the additional cyclic prefix (s) to combat ISI and ICI due to the filtering

% UFMC parameters
UFMC_NumberOfSubcarriers     = 24;                                      % Number of subcarriers
UFMC_NumberOfSymbolsInTime   = 14;                                      % Number UFMC symbols in time
UFMC_SubcarrierSpacing       = 15e3;                                    % Subcarrier spacing (Hz)
UFMC_CyclicPrefixLength      = 0;                                       % Length of the cyclic prefix (s) to combat the channel. If zero padding is used, this length reprents the zero guard length instead of the CP length.
UFMC_FilterLengthTX          = 1/14*1/(UFMC_SubcarrierSpacing);         % Length of the transmit filter (s)
UFMC_FilterLengthRX          = 1/14*1/(UFMC_SubcarrierSpacing);         % Length of the receive filter (s)
UFMC_FilterCylicPrefixLength = 1/(14*UFMC_SubcarrierSpacing);           % Length of the additional cyclic prefix (or zero guard symbol if ZP is used) in seconds (s). Needed to combat ISI and ICI due to the filtering. However, small ICI and ISI is perfectly feasibly.
UFMC_ZeroPaddingInsteadOfCP  = true;                                    % TRUE for Zero Padding (ZP) and FALSE for a conventional Cyclic Prefix (CP). Note that a CP delivers nicer plots of the power spectral density because there are no zero crossing.

%% Generate " +Modulation\" Objects
% FBMC Object
FBMC = Modulation.FBMC(...
FBMC_NumberOfSubcarriers,...                                        % Number of subcarriers
FBMC_NumberOfSymbolsInTime,...                                      % Number FBMC symbols in time
FBMC_SubcarrierSpacing,...                                          % Subcarrier spacing (Hz)
SamplingRate,...                                                    % Sampling rate (Samples/s)
0,...                                                               % Intermediate frequency of the first subcarrier (Hz).  Must be a multiple of the subcarrier spacing
false,...                                                           % Transmit real valued signal (sampling theorem must be fulfilled!)
FBMC_PrototypeFilter,...                                            % Prototype filter (Hermite, PHYDYAS, RRC) and OQAM or QAM. The data rate of QAM is reduced by a factor of two compared to OQAM, but robustness in doubly-selective channels is inceased
FBMC_OverlappingFactor, ...                                         % Overlapping factor (also determines oversampling in the frequency domain)
0, ...                                                              % Initial phase shift
true ...                                                            % Polyphase implementation
);
FBMC_BlockOverlapTime = (FBMC.PrototypeFilter.OverlappingFactor-1/2)*FBMC.PHY.TimeSpacing;

% OFDM Object
OFDM = Modulation.OFDM(...
OFDM_NumberOfSubcarriers,...                                        % Number of subcarriers
OFDM_NumberOfSymbolsInTime,...                                      % Number OFDM symbols in time
OFDM_SubcarrierSpacing,...                                          % Subcarrier spacing (Hz)
SamplingRate,...                                                    % Sampling rate (Samples/s)
0,...                                                               % Intermediate frequency of the first subcarrier (Hz). Must be a multiple of the subcarrier spacing
false,...                                                           % Transmit real valued signal (sampling theorem must be fulfilled!)
OFDM_CyclicPrefixLength, ...                                        % Length of the cyclic prefix (s)
FBMC_BlockOverlapTime ...                                           % Length of the guard time (s), that is, zeros at the beginning and at the end of the transmission
);

% Windowed OFDM (WOLA)
WOLA = Modulation.WOLA(...
WOLA_NumberOfSubcarriers,...                                        % Number subcarriers
WOLA_NumberOfSymbolsInTime,...                                      % Number WOLA symbols in time
WOLA_SubcarrierSpacing,...                                          % Subcarrier spacing (Hz)
SamplingRate,...                                                    % Sampling rate (Samples/s)
0,...                                                               % Intermediate frequency of the first subcarrier (Hz). Must be a multiple of the subcarrier spacing
false,...                                                           % Transmit real valued signal (sampling theorem must be fulfilled!)
0, ...                                                              % Length of the cyclic prefix (s)
FBMC_BlockOverlapTime-WOLA_WindowLengthTX/2, ...                    % Length of the guard time (s), that is, zeros at the beginning and at the end of the transmission
WOLA_WindowLengthTX, ...                                            % Length of the window overlapping (s) at the transmitter
WOLA_WindowLengthRX ...                                             % Length of the window overlapping (s) at the receiver
);

% FOFDM (Filtered OFDM)
FOFDM = Modulation.FOFDM(...
FOFDM_NumberOfSubcarriers,...                                       % Number of subcarriers
FOFDM_NumberOfSymbolsInTime,...                                     % Number FOFDM symbols in time
FOFDM_SubcarrierSpacing,...                                         % Subcarrier spacing (Hz)
SamplingRate,...                                                    % Sampling rate (Samples/s)
0,...                                                               % Intermediate frequency of the first subcarrier (Hz). Must be a multiple of the subcarrier spacing
false,...                                                           % Transmit real valued signal (sampling theorem must be fulfilled!)
0, ...                                                              % Length of the cyclic prefix (s)
FBMC_BlockOverlapTime-FOFDM_FilterLengthTX/2, ...                   % Length of the guard time (s), that is, zeros at the beginning and at the end of the transmission
FOFDM_FilterLengthTX, ...                                           % Length of the transmit filter (s)
FOFDM_FilterLengthRX, ...                                           % Length of the receive filter (s)
FOFDM_FilterCylicPrefixLength ...                                   % Length of the additional cyclic prefix (s).  Needed to combat ISI and ICI due to the filtering. However, some small ICI and ISI is perfectly fine.
);

% UFMC (Subband Filtered OFDM)
UFMC = Modulation.UFMC(...
UFMC_NumberOfSubcarriers,...                                        % Number of subcarriers
UFMC_NumberOfSymbolsInTime,...                                      % Number UFMC symbols in time
UFMC_SubcarrierSpacing,...                                          % Subcarrier spacing (Hz)
SamplingRate,...                                                    % Sampling rate (Samples/s)
0,...                                                               % Intermediate frequency of the first subcarrier (Hz). Must be a multiple of the subcarrier spacing
false,...                                                           % Transmit real valued signal (sampling theorem must be fulfilled!)
0, ...                                                              % Length of the cyclic prefix (s). If zero padding is used, this length reprents the zero guard length instead of the CP length
FBMC_BlockOverlapTime-UFMC_FilterLengthTX/2, ...                    % Length of the guard time (s), that is, zeros at the beginning and at the end of the transmission
UFMC_FilterLengthTX, ...                                            % Length of the transmit filter (s)
UFMC_FilterLengthRX, ...                                            % Length of the receive filter (s)
UFMC_FilterCylicPrefixLength, ...                                   % Length of the additional cyclic prefix (or zero guard symbol if ZP is used) in seconds (s). Needed to combat ISI and ICI due to the filtering. However, some small ICI and ISI is perfectly fine.
UFMC_ZeroPaddingInsteadOfCP ...                                     % TRUE for Zero Padding (ZP) or FALSE for a conventional Cyclic Prefix (CP)
);

% Number of samples
N_FBMC  = FBMC.Nr.SamplesTotal;
N_OFDM  = OFDM.Nr.SamplesTotal;
N_WOLA  = WOLA.Nr.SamplesTotal;
N_FOFDM = FOFDM.Nr.SamplesTotal;
N_UFMC  = UFMC.Nr.SamplesTotal;
N       = max([N_FBMC N_OFDM N_WOLA N_FOFDM N_UFMC]);

ChannelModel = Channel.FastFading(...
SamplingRate,...                                                    % Sampling rate (Samples/s)
Channel_PowerDelayProfile,...                                       % Power delay profile, either string or vector: 'Flat', 'AWGN', 'PedestrianA', 'PedestrianB', 'VehicularA', 'VehicularB', 'ExtendedPedestrianA', 'ExtendedPedestrianB', or 'TDL-A_xxns','TDL-B_xxns','TDL-C_xxns' (with xx the RMS delay spread in ns, e.g. 'TDL-A_30ns'), or [1 0 0.2] (Self-defined power delay profile which depends on the sampling rate)
N,...                                                               % Number of total samples
Channel_Velocity_kmh/3.6*Channel_CarrierFrequency/2.998e8,...       % Maximum Doppler shift: Velocity_kmh/3.6*CarrierFrequency/2.998e8
Channel_DopplerModel,...                                            % Which Doppler model: 'Jakes', 'Uniform', 'Discrete-Jakes', 'Discrete-Uniform'. For "Discrete-", we assume a discrete Doppler spectrum to improve the simulation time. This only works accuratly if the number of samples and the velocity is sufficiently large
100, ...                                                            % Number of paths for the WSSUS process. Only relevant for a 'Jakes' and 'Uniform' Doppler spectrum
1,...                                                               % Number of transmit antennas
1,...                                                               % Number of receive antennas
true ...                                                            % Gives a warning if the predefined delay taps of the channel do not fit the sampling rate. This is usually not much of a problem if they are approximatly the same.
);

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]Ronald Nissel (2018) Filter Bank Multicarrier Modulation (FBMC)

???? 4 Matlab代码及文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【信道估计】【MIMO】【FBMC】未来移动通信的滤波器组多载波调制方案(Matlab代码实现) 的相关文章

  • 如何生成行和列不重复的随机矩阵?

    如何生成具有特定范围的行和列中不重复的随机矩阵 示例 3x3 范围 1 到 3 2 1 3 3 2 1 1 3 2 示例 4x4 范围 1 到 4 4 1 3 2 1 3 2 4 3 2 4 1 2 4 1 3 解决这个问题的一种方法是生成
  • parfor 和处理类

    我有一个句柄类 classdef A
  • 通过在 MATLAB 中填充当前值来扩展数组

    我有一个相当简单的问题 我只是想知道在 MATLAB 中是否有一种简单的方法可以做到这一点 即一个函数来完成此任务 而不是自己编写循环或其他东西 假设我有一个时间序列 其中 Time 是1 1 1000和数据是2 1 1 1000 我想通过
  • 分析 mex 函数

    我刚刚用 c 将 Matlab 程序重写为 mex 函数以加快速度 并取得了出色的结果 这个优化决策是一个非常非常好的主意 无需线程即可将速度提高 20 倍 它仍然让我很好奇 mex 函数将时间花在什么上 并希望找出可能的瓶颈 我正在寻找一
  • 从随机像素进行图像插值

    我想问一个关于单通道图像插值的问题 选择单通道只是为了简单起见 否则我正在处理多通道图像 假设有一个纯黑色背景 像素强度为0 的单通道图像 其上有一些强度值非零的像素 我想应用插值算法 用来自相邻非零强度像素的插值填充图像的整个黑色区域 您
  • 将 matlab 中的 find() 转换为 python

    我正在将代码从 Matlab 转换为 Python Matlab中的代码为 x find sEdgepoints gt 0 sNorm lt lowT sEdgepoints x 0 两个数组的大小相同 我基本上是在创建一个掩码 I rea
  • 在 GUI MATLAB 中为静态文本赋值

    如何在 MATLAB GUI 中为静态文本赋值 双击指南中的文本打开属性编辑器 然后编辑 String 财产 您还可以设置 Tag 属性 以便您可以在 GUI 运行时对其进行编辑 如果您将标签设置为mytext 您可以将静态文本更改为 My
  • GUI 中的 Matlab 缩放监听器

    我有一个 GUI 由 MATLAB 中的绘图和静态文本组成 我想在绘图上有一个缩放侦听器 以便我可以用放大倍率更新静态文本 无论如何 我可以做到这一点吗 脚本文件 或者您可以将其作为嵌套函数执行 无论您喜欢什么 f figure 1 z z
  • 如何在Matlab中计算两个矩阵之间的快速外积?

    我有两个 n m 矩阵 A and B 我想创建一个新的矩阵C类似于 for i 1 n C C outerProduct A i B i end i e C是一个大小为 m x m 的矩阵 即各行的所有外积之和A and B 有没有一种无
  • Matlab多核

    我正在运行一种占用大量资源并最大化 CPU 的算法 问题是它只使用一个CPU 我怎样才能使MATLAB多线程计算并使用超过1个CPU 除非您专门使用并行结构 即使用显式并行性 或使用已经为您并行化的内置函数 否则 Matlab 将不会在多核
  • 与 Matlab 相比,Numpy 加载 csv 太慢

    我发布这个问题是因为我想知道我是否做了一些非常错误的事情才能得到这个结果 我有一个中等大小的 csv 文件 我尝试使用 numpy 来加载它 为了便于说明 我使用 python 创建了该文件 import timeit import num
  • 计算向量中连续 1 和 0 的数量

    在 Matlab 中我有一个如下所示的向量 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 我现在要做的是统计这个向量中1的个数 连续的 1 算作 1 此外 我还想计算 1 之间 0 的平均值和中
  • 梯度下降Matlab实现

    我已经浏览了堆栈溢出中的许多代码 并在同一行上编写了自己的代码 这段代码有一些问题我无法理解 我正在存储值 theta1 和 theta 2 以及用于分析目的的成本函数 x 和 Y 的数据可以从此下载页 它具有 dat 文件形式的 x 和
  • 如何将 Simulink 编码器编译器版本设置为支持 C++11 的版本?

    我正在尝试将代码合并到 Simulink 及其嵌入式编码器中 该代码使用 C 11 扩展 跑步mex setup c 给出这个输出 mex setup c MEX configured to use Xcode Clang for C la
  • 读取 MEX 文件中的 4D 数组

    我在 MATLAB 中有一个 4 维数组 我正在尝试访问 MEX 函数中的数组 下面创建 testmatrix 一个 4 维矩阵 已知数据为uint8 type Create a 4D array 2x 2y rgb 3 framenumb
  • MATLAB 引擎函数的输入参数

    我正在尝试使用 MATLAB 引擎在 Python 中调用 MATLAB 函数 但遇到一些问题 在设法将 NumPy 数组作为函数的输入处理后 现在 MATLAB 出现一些错误 MatlabExecutionError 未定义输入函数 si
  • 在 MATLAB 中绘制圆

    我被要求找到在 MATLAB 中绘制圆的不同方法 看起来很无聊 不过我可以想出一些想法 有些可能效率低下 Method 1 ezpolar x 1 Method 2 t linspace 0 2 pi 100 plot sin t cos
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • 如何将向量标准化/非标准化到范围 [-1;1]

    我怎么能够正常化到范围的向量 1 1 我想使用函数norm 因为它会更快 也让我知道我该怎么做非规范化之后的向量正常化 norm对向量进行归一化 使其平方和为 1 如果要对向量进行归一化 使其所有元素都在 0 和 1 之间 则需要使用最小值
  • 正确重载 stringbuf 以替换 MATLAB mex 文件中的 cout

    MathWorks 目前不允许您使用cout当 MATLAB 桌面打开时 从 mex 文件中读取 因为它们已重定向 stdout 他们当前的解决方法是提供一个函数 mexPrintf 他们要求你改用 http www mathworks c

随机推荐