Цитата(petrov @ Jan 26 2018, 13:43)

АРУ, адаптивные фильтры тоже имеют смещение оценки в зависимости от SNR, что прекрасно видно у них по итоговому созвездию, можно внести поправочку в референсный сигнал, чтобы при каком-то наихудшем рабочем SNR смещения не было.
Спасибо. Попробую.
Сейчас замоделировал в MATLAB простенький пример анализа помехоустойчивости. Опорные созвездия имеют расстояние 2, в канале передается сигнал, средняя мощность которого равна 1. Для этого есть коэффициент scale. Перед демодуляцией в первом случае я увеличиваю мощность сигнала с учетом SNR, чтобы вписать его в опорное созвездие. Во втором - нет. Мне казалось, что будут результаты хуже, а они почти совпадают. Видимо, при малых SNR и так BER большой, а при больших эта поправка настолько мала, что соизмерима с дисперсией ошибки при генерации белого шума.
Код
N = 10000;
M = 16;
hMod = comm.RectangularQAMModulator('ModulationOrder',M);
hDemod = comm.RectangularQAMDemodulator('ModulationOrder',M);
const = step(hMod,(0:M-1)');
scale = modnorm(const, 'avpow', 1);
EbN0 = 5;
SNR = EbN0 + 10*log10(log2(M));
dataIn = randi([0 M-1],N,1);
txSig = step(hMod,dataIn);
txSig = txSig*scale;
rxSig = awgn(txSig,SNR);
rxSig = rxSig/std(rxSig);
rxSig1 = rxSig/scale*sqrt((1+10^(-SNR/10)));
dataOut1 = step(hDemod,rxSig1);
rxSig2 = rxSig/scale;
dataOut2 = step(hDemod,rxSig2);
bi = de2bi(dataIn); % input bits
bi = reshape(bi',1,N*log2(M));
bo1 = de2bi(dataOut1); % received bits
bo1 = reshape(bo1',1,N*log2(M));
bo2 = de2bi(dataOut2); % received bits
bo2 = reshape(bo2',1,N*log2(M));
sum(abs(rxSig1).^2)/length(rxSig1)
sum(abs(rxSig2).^2)/length(rxSig2)
BER1 = sum(xor(bi,bo1))/(N*log2(M))
BER2 = sum(xor(bi,bo2))/(N*log2(M))
UPD.: Разобрался. Построил scatterplot при отсутствии шума для разных коэффициентов, на которые умножается принятый сигнал. Посмотрел для разных М, с какого значения начинается ошибка в виде полки. Действительно, sqrt((1+10^(-SNR/10))) можно пренебречь. Теперь буду уже непосредственно с АРУ экспериментировать.