Компенсируйте сигнал BPSK использование линейного эквалайзера с алгоритмом наименьшее количество среднего квадратичного (LMS).
Сгенерируйте случайные двоичные данные и примените модуляцию BPSK.
data = randi([0 1],1000,1); modData = pskmod(data,2);
Примените 2D касание статическое исчезновение к модулируемому сигналу.
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)')