Is this a possible lteEPDCCHDecode bug

11 views (last 30 days)
Sean
Sean on 13 Aug 2025
I have the following code that uses the "single candidate" variation of lteEPDCCHDecode:
enb = lteRMCDL('R.13');
[txSignal,~,info] = lteRMCDLTool(enb,[1;0;0;1]);
% Configure propagation channel
chcfg.DelayProfile = 'EPA';
chcfg.NRxAnts = 1;
chcfg.DopplerFreq = 70;
chcfg.MIMOCorrelation = 'Low';
chcfg.SamplingRate = info.SamplingRate;
chcfg.Seed = 1;
chcfg.InitPhase = 'Random';
chcfg.InitTime = 0;
txSignal = [txSignal; zeros(15,4)];
N = length(txSignal);
noise = 1e-3*complex(randn(N,chcfg.NRxAnts),randn(N,chcfg.NRxAnts));
rxSignal = lteFadingChannel(chcfg,txSignal)+noise;
% Synchronization and OFDM demodulation
offset = lteDLFrameOffset(enb,rxSignal);
rxGrid = lteOFDMDemodulate(enb,rxSignal(1+offset:end,:));
% Channel estimation
cec.FreqWindow = 9;
cec.TimeWindow = 9;
cec.InterpType = 'Cubic';
cec.PilotAverage = 'UserDefined';
cec.InterpWinSize = 3;
cec.InterpWindow = 'Causal';
cec.Reference = 'EPDCCHDMRS';
% EPDCCH configuration
chs.EPDCCHNID = 123;
chs.EPDCCHType = 'Distributed';
chs.EPDCCHPRBSet = [1:6];
chs.EPDCCHECCE = [0 23];
% Received symbols
griddims = lteResourceGridSize(enb); % Resource grid dimensions
sym_per_sf = griddims(2); % Number of OFDM symbols in a subframe
rx_sf = rxGrid(:,1:sym_per_sf,:);
[cand_chest,cand_noiseest] = lteDLChannelEstimate(enb, chs, cec, rx_sf);
[epdcchIndices,epdcchInfo] = lteEPDCCHIndices(enb,chs);
disp(epdcchInfo);
[cand_sym,cand_chest_sym] = lteExtractResources(epdcchIndices,rx_sf,cand_chest);
% Decode EPDCCH
[cand_bits,cand_symbols] = lteEPDCCHDecode(enb,chs,cand_sym,cand_chest_sym,cand_noiseest);
I get the following output
>> EPDCCH_Decode
EPDCCHG: 1248
EPDCCHGd: 624
nEPDCCH: 104
NECCE: 24
NECCEPerPRB: 4
NEREGPerECCE: 4
EPDCCHPorts: [1 3]
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-2.
Error in lteEqualizeMMSE (line 119)
out(scNo,symbNo,:) = G*r;
^^^^^^^^^^^^^^^^^^
Error in lteEPDCCHDecode (line 440)
[symbols(:,p),csi(:,p)] = lteEqualizeMMSE(rxsym,squeeze(hest(:,:,p)),noiseest);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error in EPDCCH_Decode (line 47)
[cand_bits,cand_symbols] = lteEPDCCHDecode(enb,chs,cand_sym,cand_chest_sym,cand_noiseest);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I verified that the parameter cand_sym is of size EPDCCHGd x nRxAnt and cand_chest of size EPDCCHGd x nRxAnt x 4. Note in lteEqualizeMMSE(reGrid, Hest, n0) the following lines appear to produce incorrect results:
noSc = size(reGrid,1);
noSymb = size(reGrid,2);
noRxAnt = size(Hest,3);
noTxAnt = size(Hest,4);
any ideas on what is wrong?

Answers (0)

Categories

Find more on LTE Toolbox in Help Center and File Exchange

Products


Release

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!