Выравнивание сигнала BPSK с использованием линейного эквалайзера с алгоритмом наименьшего квадрата (LMS).
Генерировать случайные двоичные данные и применять модуляцию BPSK.
data = randi([0 1],1000,1); modData = pskmod(data,2);
Примените двухконтурное статическое замирание к модулированному сигналу.
rxSig = conv(modData,[0.5 0.05]);
Создайте объект адаптивного алгоритма LMS с размером шага 0,06.
alg = lms(0.06);
Warning: LMS will be removed in a future release. Use comm.LinearEqualizer or comm.DecisionFeedbackEqualizer instead. See <a href="matlab:helpview(fullfile(docroot, 'toolbox','comm', 'comm.map'), 'REPLACE_udd_equalizer')">Communications Toolbox Release Notes</a> for more information.
Создайте объект линейного эквалайзера с 8 отводами, используя ранее созданный объект алгоритма. Установите индекс опорного ответвления равным 4.
eqlms = lineareq(8,alg);
Warning: LINEAREQ will be removed in a future release. Use comm.LinearEqualizer instead. See <a href="matlab:helpview(fullfile(docroot, 'toolbox','comm', 'comm.map'), 'REPLACE_udd_equalizer')">Communications Toolbox Release Notes</a> for more information.
eqlms.RefTap = 4;
Выровнять принятый сигнал, rxSigпри использовании первых 200 битов данных в качестве обучающей последовательности.
trSeq = data(1:200); [eqSig,~,e] = equalize(eqlms,rxSig,trSeq);
Warning: EQUALIZE will be removed in a future release. Use comm.LinearEqualizer or comm.DecisionFeedbackEqualizer instead. See <a href="matlab:helpview(fullfile(docroot, 'toolbox','comm', 'comm.map'), 'REPLACE_udd_equalizer')">Communications Toolbox Release Notes</a> for more information.
Отфильтруйте и постройте график мощности принимаемого (неуравновешенного) сигнала. Величина сигнала была ослаблена каналом.
rxSigPwr = filter(0.1*ones(10,1),1,abs(rxSig)).^2; plot(rxSigPwr) title('Received Signal') xlabel('Bits') ylabel('Power (W)')

Постройте график выровненного сигнала. Сигнал достигает заданного уровня мощности 1 Вт.
eqSigPwr = filter(0.1*ones(10,1),1,abs(eqSig)).^2; plot(eqSigPwr) title('Equalized Signal') xlabel('Bits') ylabel('Power (W)')

Постройте график величины оценки ошибки, e. Погрешность уменьшается до тех пор, пока она не станет почти нулевой после 400 бит.
plot(abs(e)) title('Error Estimate') xlabel('Bits') ylabel('Amplitude (V)')
