classdef FBMC < handle
% =====================================================================
% This MATLAB class represents an implementation of FBMC. The
% modulation parameters are initialized by the class contructor.
% The modulation of data symbols x and the demodulation of the
% received samples r is then performed by the methods ".Modulation(x)"
% and ".Demodulation(r)".
% Additionally, there exist some other useful methods, such as,
% ".PlotPowerSpectralDensity" or ".GetTXMatrix".
% =====================================================================
% Ronald Nissel, rnissel@nt.tuwien.ac.at
% (c) 2017 by Institute of Telecommunications, TU Wien
% www.nt.tuwien.ac.at
% =====================================================================
properties (SetAccess = private)
Method % defines the modulation method (prototype filter)
Nr % for dimensionless parameters
PHY % for parameters with physical interpretation
PrototypeFilter % for prototype filter parameters
Implementation % implmentation relevent parameters
end
methods
% Class constructor, define default values.
function obj = FBMC(varargin)
% Initialize parameters, set default values
if numel(varargin) == 10
obj.Nr.Subcarriers = varargin{1}; % Number of subcarriers
obj.Nr.MCSymbols = varargin{2}; % Number FBMC symbols in time
obj.PHY.SubcarrierSpacing = varargin{3}; % Subcarrier spacing (Hz)
obj.PHY.SamplingRate = varargin{4}; % Sampling rate (Samples/s)
obj.PHY.IntermediateFrequency = varargin{5}; % Intermediate frequency of the first subcarrier (Hz). Must be a multiple of the subcarrier spacing
obj.PHY.TransmitRealSignal = varargin{6}; % Transmit real valued signal (sampling theorem must be fulfilled!)
obj.Method = varargin{7}; % 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
obj.PrototypeFilter.OverlappingFactor = varargin{8}; % Overlapping factor (also determines oversampling in the frequency domain)
obj.Implementation.InitialPhaseShift = varargin{9}; % Initial phase shift
obj.Implementation.UsePolyphase = varargin{10}; % Efficient IFFT implementation, true or false
elseif numel(varargin) == 0
% Default Values (can later be changed using FBMC.Set...)
obj.Nr.Subcarriers = 12;
obj.Nr.MCSymbols = 30;
obj.PHY.SubcarrierSpacing = 15e3;
obj.PHY.SamplingRate = obj.Nr.Subcarriers*obj.PHY.SubcarrierSpacing;
obj.PHY.IntermediateFrequency = 0;
obj.PHY.TransmitRealSignal = false;
obj.Method = 'Hermite-OQAM';
obj.PrototypeFilter.OverlappingFactor = 8;
obj.Implementation.InitialPhaseShift = 0;
obj.Implementation.UsePolyphase = true;
else
error('Number of input variables must be either 0 (default values) or 10');
end
% calculate and set all dependent parameters
obj.SetDependentParameters();
end
function SetDependentParameters(obj)
% method that sets all parameters which are dependent on other parameters
% Check Parameters
if mod(obj.PHY.SamplingRate/(2*obj.PHY.SubcarrierSpacing),1)~=0
obj.PHY.SubcarrierSpacing=obj.PHY.SamplingRate/(2*round(obj.PHY.SamplingRate/(2*obj.PHY.SubcarrierSpacing)));
disp('Sampling Rate divided by (Subcarrier spacing times 2) must be must be an integer!');
disp(['Therefore, the subcarrier spacing is set to: ' int2str(obj.PHY.SubcarrierSpacing) 'Hz']);
end
if mod(obj.PHY.IntermediateFrequency/obj.PHY.SubcarrierSpacing,1)~=0
obj.PHY.IntermediateFrequency = round(obj.PHY.IntermediateFrequency/obj.PHY.SubcarrierSpacing)*obj.PHY.SubcarrierSpacing;
disp('The intermediate frequency must be a multiple of the subcarrier spacing!');
disp(['Therefore, the intermediate frequency is set to ' int2str(obj.PHY.IntermediateFrequency) 'Hz']);
end
if (obj.PHY.SamplingRate<obj.Nr.Subcarriers*obj.PHY.SubcarrierSpacing)
error('Sampling Rate must be higher: at least Number of Subcarriers times Subcarrier Spacing');
end
% dependent parameters
obj.PHY.dt = 1/obj.PHY.SamplingRate;
% Different Prototype Filters and OQAM or QAM
switch obj.Method
case 'Hermite-OQAM'
obj.Implementation.TimeSpacing = obj.PHY.SamplingRate/(2*obj.PHY.SubcarrierSpacing);
obj.PHY.TimeSpacing = obj.Implementation.TimeSpacing*obj.PHY.dt;
obj.Implementation.FrequencySpacing = obj.PrototypeFilter.OverlappingFactor;
obj.PrototypeFilter.TimeDomain = PrototypeFilter_Hermite(obj.PHY.TimeSpacing*2,obj.PHY.dt,obj.PrototypeFilter.OverlappingFactor/2);
case 'Hermite-QAM'
obj.Implementation.TimeSpacing = obj.PHY.SamplingRate/(obj.PHY.SubcarrierSpacing)*2;
obj.PHY.TimeSpacing = obj.Implementation.TimeSpacing*obj.PHY.dt;
obj.Implementation.FrequencySpacing = obj.PrototypeFilter.OverlappingFactor*4;
obj.PrototypeFilter.TimeDomain = PrototypeFilter_Hermite(obj.PHY.TimeSpacing,obj.PHY.dt,obj.PrototypeFilter.OverlappingFactor);
case 'Rectangle-QAM' % OFDM without cyclic prefix
obj.Implementation.TimeSpacing = obj.PHY.SamplingRate/(obj.PHY.SubcarrierSpacing);
obj.PHY.TimeSpacing = obj.Implementation.TimeSpacing*obj.PHY.dt;
obj.Implementation.FrequencySpacing = obj.PrototypeFilter.OverlappingFactor*2;
TimeDomain = zeros(2*obj.PrototypeFilter.OverlappingFactor*obj.Implementation.TimeSpacing,1);
TimeDomain(1:obj.Implementation.TimeSpacing) = 1/sqrt(obj.PHY.TimeSpacing);
TimeDomain = circshift(TimeDomain,length(TimeDomain)/2-obj.Implementation.TimeSpacing/2);
obj.PrototypeFilter.TimeDomain = TimeDomain;
case 'RRC-OQAM'
obj.Implementation.TimeSpacing = obj.PHY.SamplingRate/(2*obj.PHY.SubcarrierSpacing);
obj.PHY.TimeSpacing = obj.Implementation.TimeSpacing*obj.PHY.dt;
obj.Implementation.FrequencySpacing = obj.PrototypeFilter.OverlappingFactor;
obj.PrototypeFilter.TimeDomain = PrototypeFilter_RootRaisedCosine(obj.PHY.TimeSpacing*2,obj.PHY.dt,obj.PrototypeFilter.OverlappingFactor/2);
case 'RRC-QAM'
obj.Implementation.TimeSpacing = obj.PHY.SamplingRate/(obj.PHY.SubcarrierSpacing)*2;
obj.PHY.TimeSpacing = obj.Implementation.TimeSpacing*obj.PHY.dt;
obj.Implementation.FrequencySpacing = obj.Prototy
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
5G通信系统下FBMC-OQAM吞吐量的仿真-源码 (904个子文件)
FBMC.m 41KB
UFMC.m 33KB
Throughput.m 32KB
FastFading.m 30KB
FOFDM.m 25KB
Figure_5_6_7_8_SIR_OptimalSubcarrierSpacing.m 25KB
Plot_OptimalSubcarrierspaci.m 25KB
WOLA.m 24KB
Calculate_SIR_SubcarrierSpacing_Velocity.m 22KB
OFDM.m 19KB
ImaginaryInterferenceCancellationAtPilotPosition.m 14KB
SignalConstellation.m 14KB
PilotSymbolAidedChannelEstimation.m 11KB
TurboCoding.m 5KB
BitErrorProbabilityDoublyFlatRayleigh.m 5KB
BICM_Capacity_Rayleigh.m 5KB
SpaceCoding.m 4KB
BitErrorProbabilityAWGN.m 4KB
BICM_Capacity_Rayleigh_2_4_8_PAM.mat 12KB
BICM_Capacity_Rayleigh_2_4_8_16_PAM.mat 7KB
CP-OFDM-007LTE__TDL-A_30ns400.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns280.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns240.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns350.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns330.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns460.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns440.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns480.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns450.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns310.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns410.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns430.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns500.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns340.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns470.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns320.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns270.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns390.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns210.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns380.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns490.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns200.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns180.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns420.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns8.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns360.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns170.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns4.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns300.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns290.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns2.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns370.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns250.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns220.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns10.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns150.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns190.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns230.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns0.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns6.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns130.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns160.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns16.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns60.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns12.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns50.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns260.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns140.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns14.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns120.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns20.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns40.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns90.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns80.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns110.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns100.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns70.mat 3KB
CP-OFDM-007LTE__TDL-A_30ns30.mat 3KB
OFDM__TDL-A_30ns450.mat 3KB
OFDM__TDL-A_30ns490.mat 3KB
OFDM__TDL-A_30ns410.mat 3KB
OFDM__TDL-A_30ns460.mat 3KB
OFDM__TDL-A_30ns4.mat 3KB
OFDM__TDL-A_30ns280.mat 3KB
OFDM__TDL-A_30ns470.mat 3KB
OFDM__TDL-A_30ns8.mat 3KB
OFDM__TDL-A_30ns320.mat 3KB
OFDM__TDL-A_30ns330.mat 3KB
OFDM__TDL-A_30ns60.mat 3KB
OFDM__TDL-A_30ns480.mat 3KB
OFDM__TDL-A_30ns230.mat 3KB
OFDM__TDL-A_30ns300.mat 3KB
OFDM__TDL-A_30ns210.mat 3KB
OFDM__TDL-A_30ns2.mat 3KB
OFDM__TDL-A_30ns500.mat 3KB
OFDM__TDL-A_30ns390.mat 3KB
OFDM__TDL-A_30ns380.mat 3KB
OFDM__TDL-A_30ns430.mat 3KB
OFDM__TDL-A_30ns30.mat 3KB
OFDM__TDL-A_30ns290.mat 3KB
共 904 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
mYlEaVeiSmVp
- 粉丝: 1943
- 资源: 19万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功