dfe

(Чтобы быть удаленным) объект эквалайзера обратной связи решения Построения

dfe будет удален в будущем релизе. Используйте comm.DecisionFeedback вместо этого.

Синтаксис

eqobj = dfe(nfwdweights,nfbkweights,alg)
eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst)
eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst,nsamp)

Описание

Функция dfe создает объект эквалайзера, который можно использовать с функцией equalize, чтобы компенсировать сигнал. Чтобы узнать больше о процессе для компенсации сигнала, смотрите Коррекцию.

eqobj = dfe(nfwdweights,nfbkweights,alg) создает объект эквалайзера обратной связи решения. feedforward эквалайзера и фильтры обратной связи имеют nfwdweights и nfbkweights расположенные с интервалами символом комплексные веса, соответственно, которые являются первоначально всеми нулями. alg описывает адаптивный алгоритм, который использует эквалайзер; необходимо создать alg с помощью любой из этих функций: lms, signlms, normlms, varlms, rls или cma. Сигнальным созвездием желаемого вывода является [-1 1], который соответствует бинарному манипулированию сдвига фазы (BPSK).

eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst) задает вектор сигнального созвездия желаемого вывода.

eqobj = dfe(nfwdweights,nfbkweights,alg,sigconst,nsamp) создает DFE с незначительно расположенным с интервалами прямым фильтром. Прямому фильтру расположили с интервалами веса комплекса nfwdweights в T/nsamp, где T является периодом символа, и nsamp является положительным целым числом. nsamp = 1 соответствует расположенному с интервалами символом, вперед фильтруют.

Свойства

Приведенная ниже таблица описывает свойства объекта эквалайзера обратной связи решения. Чтобы изучить, как просмотреть или изменить значения объекта эквалайзера обратной связи решения, смотрите Коррекцию.

Примечание

Чтобы инициализировать или сбросить объект eqobj эквалайзера, введите reset(eqobj).

СвойствоОписание
EqTypeФиксированное значение, 'Decision Feedback Equalizer'
AlgTypeИмя адаптивного алгоритма представлено alg
nWeightsКоличество весов в прямом фильтре и фильтре обратной связи, в формате [nfwdweights, nfbkweights]. Количество весов в прямом фильтре должно быть по крайней мере 1.
nSampPerSymКоличество входных выборок на символ (эквивалентный входному параметру nsamp). Это значение относится к обоим структура эквалайзера (см. использование K в Коррекции), и предположение о сигнале, который будет компенсироваться.
RefTap (за исключением эквалайзеров CMA)Ссылочный индекс касания, между 1 и nfwdweights. Установка этого к значению, больше, чем 1 эффективно, задерживает ссылочный сигнал относительно входного сигнала эквалайзера.
SigConstСигнальное созвездие, вектор, длина которого обычно является степенью 2.
WeightsВектор, который конкатенирует комплексные коэффициенты от прямого фильтра и фильтра обратной связи. Это - набор wi значений в схематическом в Коррекции.
WeightInputsВектор, который конкатенирует входные параметры веса касания для прямого фильтра и фильтра обратной связи. Это - набор ui значений в схематическом в Коррекции.
ResetBeforeFilteringЕсли 1, каждый вызов equalize сбрасывает состояние eqobj перед компенсацией. Если 0, процесс коррекции поддерживает непрерывность от одного вызова до следующего.
NumSamplesProcessedКоличество выборок эквалайзер, обработанный начиная с последнего сброса. Когда вы создаете или сбрасываете eqobj, этим значением свойства является 0.
Свойства, характерные для адаптивного алгоритма, представлены algСмотрите страницу с описанием для адаптивной функции алгоритма, которая создала alg: lms, signlms, normlms, varlms, rls или cma.

Отношения среди свойств

Если вы изменяете nWeights, MATLAB поддерживает непротиворечивость в объекте эквалайзера путем корректировки значений описанных ниже свойств.

СвойствоНастроенное значение
Weightszeros(1,sum(nWeights))
WeightInputszeros(1,sum(nWeights))
StepSize (Эквалайзеры Variable-step-size LMS)InitStep*ones(1,sum(nWeights))
InvCorrMatrix (эквалайзеры RLS)InvCorrInit*eye(sum(nWeights))

Примеры

свернуть все

Компенсируйте сигнал с помощью эквалайзера обратной связи решения с адаптацией наименьшее количество среднего квадратичного (LMS).

Настройте передатчик

Создайте модулируемый сигнал передачи QPSK, содержащий случайные данные о сообщении. Передайте сигнал через произвольный фильтр канала, чтобы добавить искажение сигнала.

M = 4; % Alphabet size for modulation
msg = randi([0 M-1],2500,1); % Random message
hMod = comm.QPSKModulator('PhaseOffset',0);
modmsg = hMod(msg); % Modulate using QPSK
chan = [.986; .845; .237; .123+.31i]; % Channel coefficients
filtmsg = filter(chan,1,modmsg); % Introduce channel distortion

Настройте эквалайзер

Создайте объект DFE, который имеет 5 прямых касаний, 3 касания обратной связи. Задайте наименее среднеквадратический алгоритм, встроенный при создании объекта эквалайзера. Инициализируйте дополнительные свойства эквалайзера.

dfeObj = dfe(5,3,lms(0.01));
% Set the signal constellation
dfeObj.SigConst = hMod((0:M-1)')';
% Maintain continuity between calls to equalize
dfeObj.ResetBeforeFiltering = 0;
% Define initial coefficients to help convergence
dfeObj.Weights = [0 1 0 0 0 0 0 0];

Компенсируйте полученный сигнал

eqRxSig = equalize(dfeObj,filtmsg);

Постройте результаты

Сравните первые 200 компенсируемых символов (initial) с остающимся компенсируемым сигналом (final).

initial = eqRxSig(1:200);
plot(real(initial),imag(initial),'+')
hold on
final = eqRxSig(end-200:end);
plot(real(final),imag(final),'ro')
legend('initial', 'final')

Коррекция полученного сигнала сходится в рамках приблизительно 200 выборок.

Примените эквалайзер обратной связи решения (DFE) к 8-PSK модулируемый сигнал, которому повреждает частота выборочный канал. DFE использует 600 учебных символов.

Создайте Систему модулятора PSK object™ и установите порядок модуляции к 8.

modulator = comm.PSKModulator('ModulationOrder',8);

Создайте вектор-столбец 8-ary случайных целочисленных символов. Отберите генератор случайных чисел, rng, чтобы произвести предсказуемую последовательность чисел.

rng(12345);
data = randi([0 7],5000,1);

Используйте Системный объект modulator, чтобы модулировать случайные данные.

modData = modulator(data);

Создайте Рэлеевский Системный объект канала, чтобы задать статическую частоту выборочный канал с четырьмя касаниями. Передайте модулируемые данные через объект канала.

chan = comm.RayleighChannel('SampleRate',1000, ...
    'PathDelays',[0 0.002 0.004 0.008],'AveragePathGains',[0 -3 -6 -9]);
rxSig = chan(modData);

Создайте эквалайзер DFE, который имеет 10 каналов, вперед касается и пять касаний обратной связи. Эквалайзер использует метод обновления LMS с размером шага 0,01.

numFFTaps = 10;
numFBTaps = 5;
equalizerDFE = dfe(numFFTaps,numFBTaps,lms(0.01));

Установите свойство SigConst эквалайзера DFE совпадать с совокупностью ссылки модулятора 8-PSK. Ссылочная совокупность определяется при помощи метода constellation. Поскольку решение направило операцию, DFE должен использовать то же сигнальное созвездие в качестве схемы передачи.

equalizerDFE.SigConst = constellation(modulator).';

Компенсируйте сигнал удалить эффекты искажения канала. Используйте первые 600 символов, чтобы обучить эквалайзер.

trainlen = 600;
[eqSig,detectedSig] = equalize(equalizerDFE,rxSig, ...
    modData(1:trainlen));

Постройте полученный сигнал, эквалайзер вывод после обучения и идеального сигнального созвездия.

hScatter = scatterplot(rxSig,1,trainlen,'bx');
hold on
scatterplot(eqSig,1,trainlen,'g.',hScatter);
scatterplot(equalizerDFE.SigConst,1,0,'m*',hScatter);
legend('Received signal','Equalized signal',...
    'Ideal signal constellation');
hold off

Создайте Системный объект демодулятора PSK. Используйте объект демодулировать полученный сигнал до и после коррекции.

demod = comm.PSKDemodulator('ModulationOrder',8);
demodSig = demod(rxSig);
demodEqualizedSig = demod(detectedSig);

Вычислите коэффициенты ошибок для двух демодулируемых сигналов и сравните результаты.

errorCalc = comm.ErrorRate;
nonEqualizedSER = errorCalc(data(trainlen+1:end), ...
    demodSig(trainlen+1:end));
reset(errorCalc)
equalizedSER = errorCalc(data(trainlen+1:end), ...
    demodEqualizedSig(trainlen+1:end));
disp('Symbol error rates with and without equalizer:')
disp([equalizedSER(1) nonEqualizedSER(1)])

Эквалайзер помогает устранить искажение, введенное частотой выборочный канал, и уменьшает коэффициент ошибок.

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2019a

Смотрите также

Системные объекты

Представлено до R2006a