В этом примере показано, как использовать блок LTE Symbol Demodulator для демодуляции сложных символов данных LTE к битам данных или значениям LLR. Рабочий процесс следует следующим шагам:
Настройте параметры входных данных.
Сгенерируйте системы координат случайных входных выборок.
Преобразуйте входные данные с рамкой в поток выборок и импортируйте поток в Simulink ®.
Запустите модель Simulink ®, которая содержит блок LTE Symbol Demodulator.
Экспорт потока демодулированных выборок из Simulink в рабочую область MATLAB ®.
Демодулируйте символы данных с lteSymbolDemodulate
функция для использования своего выхода в качестве ссылочных данных.
Сравните выходные данные блока Simulink с выходными данными опорной функции MATLAB.
Настройте параметры входных данных.
Сопоставьте имена модуляции со значениями. Числовые значения используются для настройки блока LTE Symbol Demodulator. Строки используются для настройки lteSymbolDemodulator
функция.
rng(0); framesize = 10; % 0 - BPSK % 1 - QPSK % 2 - 16-QAM % 3 - 64-QAM % 4 - 256-QAM % others - QPSK modSelVal = [0;1;2;3;4]; modSelStr = {'BPSK','QPSK','16QAM','64QAM','256QAM'}; decType = 'Soft'; numframes = length(modSelVal); dataSymbols = cell(1,numframes); modSelTmp = cell(1,numframes); lteFcnOutput = cell(1,numframes);
Сгенерируйте системы координат случайных входных выборок.
for ii = 1:numframes dataSymbols{ii} = complex(randn(framesize,1),randn(framesize,1)); modSelTmp{ii} = fi(modSelVal(ii)*ones(framesize,1),0,3,0); end
Преобразуйте входные данные с рамкой в поток выборок и вводите поток в блок LTE Symbol Demodulator Simulink.
idlecyclesbetweensamples = 0; idlecyclesbetweenframes = 0; [sampleIn, ctrl] = whdlFramesToSamples(dataSymbols,idlecyclesbetweensamples,... idlecyclesbetweenframes); [modSel, ~] = whdlFramesToSamples(modSelTmp,idlecyclesbetweensamples,... idlecyclesbetweenframes); validIn = logical(ctrl(:,3)'); sampletime = 1; samplesizeIn = 1; simTime = size(ctrl,1)*8;
Запустите модель Simulink.
modelname = 'ltehdlSymbolDemodulatorModel'; open_system(modelname); set_param([modelname '/Demod/LTE Symbol Demodulator'],'DecisionType',decType) sim(modelname);
Экспорт потока демодулированных выборок из Simulink в рабочее пространство MATLAB.
lteHDLOutput = sampleOut(validOut).';
Демодулируйте символы данных с lteSymbolDemodulate
функционировать и использовать его выход как ссылка данные.
for ii = 1:numframes lteFcnOutput{ii} = lteSymbolDemodulate(dataSymbols{ii},modSelStr{ii},decType).'; end
Сравните вывод модели Simulink с выходом lteSymbolDemodulate
функция.
lteFcnOutput = double(cell2mat(lteFcnOutput)); figure(1) stem(lteHDLOutput,'b') hold on stem(lteFcnOutput,'--r') grid on legend('Reference','Simulink') xlabel('Sample Index') ylabel('Magnitude') title('Comparison of Simulink block and MATLAB function')