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

Для просмотра документации необходимо авторизоваться на сайте