【信道估计】【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代码实现) 的相关文章

  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • 将自动生成的 Matlab 文档导出为 html

    我想为我开发的 Matlab 工具箱生成完整的帮助 我已经看到如何显示自定义文档 http www mathworks fr fr help matlab matlab prog display custom documentation h
  • Matlab中转换数据类型的有效方法(double vs. im2double)

    我想将真彩色图像转换为双精度 据我所知有两种方法可以做到这一点 double rgb img im2double rgb img 哪一种效率更高 谢谢 他们都是不同的 im2double将图像的范围转换为0 1如果数据类型是uint8 or
  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 在另一列中添加具有特定条件的一列,如 excel 的 sumif

    我有一个像这样的矩阵 A 1 2 2 3 3 4 4 5 5 6 6 8 7 9 8 5 9 4 现在我想添加第二列 条件是如果 limit 0 interval 3 且 limit limit interval 或者换句话说 当第 1 列
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • MATLAB - 如何将子图一起缩放?

    我在一张图中有多个子图 每个图的 X 轴是相同的变量 时间 每个图上的 Y 轴都不同 无论是它所代表的内容还是数据的大小 我想要一种同时放大所有图的时间尺度的方法 理想情况下 可以在其中一张图上使用矩形缩放工具 并让其他图相应地更改其 X
  • Simulink 仿真引擎如何工作?

    我想了解 Simulink 仿真引擎的工作原理 它是否使用离散事件模拟机制 那么如何处理连续时间 它是否依赖于基于静态循环的代码生成 或者 在第一个周期之前 它会计算出块的执行顺序 从不需要任何其他块输入的块开始 每个周期 它都会根据输入和
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 如何更改Plotyy第二轴的颜色和字体大小?

    我使用 MATLAB 的plotyy 函数绘制了两条曲线 AX H1 H2 plotyy voltage span amplitude voltage span Ca SR The problem is that I cannot chan
  • 从开始/结束索引列表创建向量化数组

    我有一个两列矩阵M包含一堆间隔的开始 结束索引 startInd EndInd 1 3 6 10 12 12 15 16 如何生成所有区间索引的向量 v 1 2 3 6 7 8 9 10 12 15 16 我正在使用循环执行上述操作 但我想
  • 在matlab中绘制给定区域内(两个圆之间)的向量场

    我想在 Matlab 中绘制下面的向量场 u cos x x 0 y y 0 v sin x x 0 y y 0 我可以在网格中轻松完成 例如 x 和 y 方向从 2 到 2 x 0 2 y 0 1 x y meshgrid 2 0 2 2
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用
  • @(t)在Matlab中是什么意思? [复制]

    这个问题在这里已经有答案了 正如标题所示 考虑到下面的上下文 t 在 Matlab 中到底意味着什么 computeNumericalGradient 是一个函数 cofiCostFunc 也是一个接受一堆参数的函数 问题是 t 对 cof
  • 如何将复杂的 csv 文件导入到 Matlab 中的数值向量

    我想知道我们应该如何读取由字符串 双精度数和字符等组成的复杂 csv 文件 例如 您能否提供一个可以在此 csv 文件中提取数值的成功命令 Click here http www ecb europa eu stats money yc d
  • 如何在 MATLAB 中绘制纹理映射三角形?

    我有一个三角形 u v 图像中的坐标 我想在 3D 坐标处绘制这个三角形 X Y Z 与图像中的三角形进行纹理映射 Here u v X Y Z都是具有三个元素的向量 代表三角形的三个角 我有一个非常丑陋 缓慢且令人不满意的解决方案 其中我

随机推荐