comm.MER

Измерьте коэффициент ошибки модуляции

Описание

The comm.MER(отношение ошибок модуляции) объект измеряет отношение сигнал/шум (ОСШ) в приложениях цифровой модуляции. Можно использовать измерения MER для определения производительности системы в приложениях связи. Для примера, определение того, соответствует ли система DVB-T применимым стандартам радиопередачи, требует точных измерений MER. Блок измеряет все выходы в дБ.

Для измерения коэффициента ошибки модуляции:

  1. Определите и настройте свой объект MER. См. «Конструкция».

  2. Функции step для измерения коэффициента ошибки модуляции в соответствии со свойствами comm.MER. Поведение step характерен для каждого объекта в тулбоксе.

Примечание

Начиная с R2016b, вместо использования step метод для выполнения операции, заданной Системной object™, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

MER = comm.MER создает коэффициент ошибки модуляции (MER) Системного объекта, MER. Этот объект измеряет отношение сигнал/шум (ОСШ) в приложениях цифровой модуляции.

MER = comm.MER(Name,Value) создает MER объект с каждым заданным набором свойств до заданного значения. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

Пример: MER = comm.MER('ReferenceSignalSource','Estimated from reference constellation') создает объект, MER, который измеряет MER принятого сигнала при помощи ссылки созвездия.

Свойства

ReferenceSignalSource

Источник опорного сигнала

Источник опорного сигнала, заданный как 'Input port' (по умолчанию) или 'Estimated from reference constellation'. Чтобы предоставить явный опорный сигнал, против которого измеряется входной сигнал, установите это свойство равным 'Input port'. Чтобы измерить MER входного сигнала относительно ссылочного созвездия, задайте это свойство как 'Estimated from reference constellation'.

ReferenceConstellation

Ссылочное созвездие

Ссылочное созвездие, заданное как вектор. Это свойство доступно, когда ReferenceSignalSource свойство 'Estimated from reference constellation'.

Значение по умолчанию является [0.7071 - 0.7071i; -0.7071 - 0.7071i; -0.7071 + 0.7071i; 0.7071 + 0.7071i], что соответствует стандартному созвездию QPSK. Можно вывести точки созвездия с помощью функций модуляции или объектов. Для примера, чтобы вывести ссылку созвездие для сигнала 16-QAM, можно использовать qammod(0:15,16).

MeasurementIntervalSource

Источник интервала измерения

Источник интервала измерения, заданный как один из следующих: 'Input length' (по умолчанию), 'Entire history', 'Custom', или 'Custom with periodic reset'. Это свойство влияет только на RMS и максимальные выходы MER.

  • Чтобы вычислить MER, используя только текущие выборки, задайте для этого свойства 'Input length'.

  • Чтобы вычислить MER для всех выборок, установите это свойство на 'Entire history'.

  • Чтобы вычислить MER за заданный интервал и использовать скользящее окно, задайте для этого свойства значение 'Custom'.

  • Чтобы вычислить MER за заданный интервал и сбросить объект каждый раз, когда интервал измерения будет заполнен, установите это свойство на 'Custom with periodic reset'.

MeasurementInterval

Интервал измерения

Интервал измерения, за который вычисляется MER, заданный в выборках как действительное положительное целое число. Это свойство доступно при MeasurementIntervalSource является 'Custom' или 'Custom with periodic reset'. Значение по умолчанию является 100.

AveragingDimensions

Средние размерности

Средние размерности, заданные как положительное целое число или вектор-строка положительных целых чисел. Это свойство определяет размерности, по которым выполняется усреднение. Для примера, чтобы среднее значение между строками, установите это свойство равным 2. Значение по умолчанию является 1.

Объект поддерживает входы переменного размера по размерностям, в которых происходит среднее значение. Однако вход для неусредненных размерностей должен оставаться постоянным между step вызовы. Для примера, если вход имеет размер [4 3 2] и Averaging dimensions является [1 3], размер выхода [1 3 1], и второе измерение должно оставаться фиксированным на 3.

MinimumMEROutputPort

Минимальный выходной порт измерения

Минимальный выходной порт измерения MER, заданный как логический скаляр. Чтобы создать выход порт для минимальных измерений MER, установите это свойство равным true. Значение по умолчанию является false.

XPercentileMEROutputPort

X выходной порт MER -percentile

X выходной порт MER -percentile, заданный как логический скаляр. Чтобы создать выходной порт для измерений X -percentile MER, установите это свойство равным true. Измерения X -percentile MER сохраняются до тех пор, пока вы не сбросите объект. Эти измерения вычисляются при помощи всех входных кадров с момента последнего сброса. Значение по умолчанию является false.

XPercentileValue

X значение -percentile

X -личное значение, выше которого падает X% измерений MER, заданное в виде действительного скаляра от 0 на 100. Это свойство применяется при XPercentileMEROutputPort является true. Значение по умолчанию является 95.

SymbolCountOutputPort

Выходной порт счетчика символов

Выходной порт подсчета символов, заданный как логический скаляр. Чтобы вывести количество накопленных символов, используемых для вычисления X измерений MER, установите это свойство на true. Это свойство доступно при XPercentileMEROutputPort свойство true. Значение по умолчанию является false.

Методы

шагИзмерьте коэффициент ошибки модуляции
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

reset

Сброс внутренних состояний Системного объекта

Примеры

свернуть все

Создайте объект MER, который выводит минимальный MER, 90-процентный MER и количество символов.

mer = comm.MER('MinimumMEROutputPort',true, ...
    'XPercentileMEROutputPort',true,'XPercentileValue',90,...
    'SymbolCountOutputPort',true);

Сгенерируйте случайные данные. Примените 16-QAM модуляцию со средней единичной степенью. Передайте сигнал через канал AWGN.

data = randi([0 15],1000,1);
refsym = qammod(data,16,'UnitAveragePower',true);
rxsym = awgn(refsym,20);

Определите значения RMS, минимального и 90-го процентиля MER.

[MERdB,MinMER,PercentileMER,NumSym] = mer(refsym,rxsym)
MERdB = 20.1071
MinMER = 11.4248
PercentileMER = 16.5850
NumSym = 1000

Сгенерируйте символы случайных данных и примените 8-PSK модуляцию.

d = randi([0 7],2000,1);
txSig = pskmod(d,8,pi/8);

Пропустите модулированный сигнал через канал AWGN.

rxSig = awgn(txSig,30);

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

mer = comm.MER;
mer1 = mer(txSig,rxSig);

Отпустите объект MER. Установите объект, чтобы использовать ссылку созвездие для выполнения измерений MER.

release(mer)
mer.ReferenceSignalSource = 'Estimated from reference constellation';
mer.ReferenceConstellation = pskmod(0:7,8,pi/8);

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

mer2 = mer(rxSig);
[mer1 mer2]
ans = 1×2

   30.0271   30.0271

Измерьте MER сигнала шумного 8-PSK с помощью двух типов пользовательских интервалов измерения. Отображение результатов.

Установите количество систем координат, M, и количество подкадров на систему координат, K.

M = 2;
K = 5;

Установите количество символов в подкадре. Вычислите соответствующую длину системы координат.

sfLen = 100;
frmLen = K*sfLen
frmLen = 500

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

mer1 = comm.MER('MeasurementIntervalSource','Custom', ...
    'MeasurementInterval',frmLen);

Сконфигурируйте объект для измерения MER с помощью 8-PSK ссылочного созвездия.

mer1.ReferenceSignalSource = 'Estimated from reference constellation';
mer1.ReferenceConstellation = pskmod(0:7,8,pi/8);

Создайте объект MER и сконфигурируйте его с помощью интервала измерения 500 символов с периодическим сбросом. Сконфигурируйте объект для измерения MER с помощью 8-PSK ссылочного созвездия.

mer2 = comm.MER('MeasurementIntervalSource','Custom with periodic reset', ...
    'MeasurementInterval',frmLen);
mer2.ReferenceSignalSource = 'Estimated from reference constellation';
mer2.ReferenceConstellation = pskmod(0:7,8,pi/8);

Инициализируйте MER и массивы сигнал-шум.

merNoReset = zeros(K,M);
merReset = zeros(K,M);
snrdB = zeros(K,M);

Измерьте MER для сигнала шумного 8-PSK, используя оба объекта. ОСШ увеличивается на 1 дБ от субкадра до субкадра. Для merNoResetдля вычисления оценки используются 500 самых последних символов. В этом случае скользящее окно используется так, что вся система координат данных используется в качестве базиса для оценки. Для merResetсимволы удаляются каждый раз, когда встречается новая система координат.

for m = 1:M
    for k = 1:K
        data = randi([0 7],sfLen,1);
        txSig = pskmod(data,8,pi/8);
        snrdB(k,m) = k+(m-1)*K+7;
        rxSig = awgn(txSig,snrdB(k,m));
        merNoReset(k,m) = mer1(rxSig);
        merReset(k,m) = mer2(rxSig);
    end
end

Отобразите MER, измеренный с помощью двух подходов. Оконная обработка, используемая в первом случае, обеспечивает среднее значение по субкадрам. Во втором случае объект MER сбрасывается после первой системы координат, так что вычисленные значения MER более точно отражают текущий ОСШ.

stairs(snrdB(:),[merNoReset(:) merReset(:)])
xlabel('SNR (dB)')
ylabel('MER (%)')
legend('No Reset','Periodic Reset')

Figure contains an axes. The axes contains 2 objects of type stair. These objects represent No Reset, Periodic Reset.

Создайте объекты модулятора и демодулятора OFDM.

ofdmmod = comm.OFDMModulator('FFTLength',32,'NumSymbols',4);
ofdmdemod = comm.OFDMDemodulator('FFTLength',32,'NumSymbols',4);

Определите количество поднесущих и символов в сигнале OFDM.

ofdmDims = info(ofdmmod);
numSC = ofdmDims.DataInputSize(1)
numSC = 21
numSym = ofdmDims.DataInputSize(2)
numSym = 4

Сгенерируйте случайные символы и примените QPSK модуляцию.

msg = randi([0 3],numSC,numSym);
modSig = pskmod(msg,4,pi/4);

OFDM модулирует сигнал QPSK. Передайте сигнал через канал AWGN. Демодулируйте сигнал с шумом.

txSig = ofdmmod(modSig);
rxSig = awgn(txSig,10,'measured');
demodSig = ofdmdemod(rxSig);

Создайте объект MER, где результат усредняется по поднесущим. Измерьте MER. Существует четыре значения, соответствующие каждому из 4 символов OFDM.

mer = comm.MER('AveragingDimensions',1);
modErrorRatio = mer(demodSig,modSig)
modErrorRatio = 1×4

   11.2338   12.5315   12.8882   12.7015

Перезаписать объект MER, где результат усредняется по символам OFDM. Измерьте MER. Существует 21 запись, соответствующая каждой из 21 поднесущих.

mer = comm.MER('AveragingDimensions',2);
modErrorRatio = mer(demodSig,modSig)
modErrorRatio = 21×1

   10.8054
   14.9655
   14.5721
   13.6024
   13.0132
   12.1391
   10.4012
    9.5017
    8.8055
   13.3824
      ⋮

Измерьте MER и среднее значение как по поднесущим, так и по символам OFDM.

mer = comm.MER('AveragingDimensions',[1 2]);
modErrorRatio = mer(demodSig,modSig)
modErrorRatio = 12.2884

Алгоритмы

MER является мерой ОСШ в модулированном сигнале, вычисленном в дБ. MER над N символами

MER=10·log10(n=1N(Ik2+Qk2)n=1N(ek))дБ,

MER для k-го символа

MERk=10*log10(1Nn=1N(Ik2+Qk2)ek)dB.

Минимальный MER представляет минимальное значение MER в пакете, или

MERmin=mink[1,...,N]{MERk},

где:

  • ek = ek=(IkI˜k)2+(QkQ˜k)2

  • Ik = Синфазное измерение k-го символа в пакете

  • Qk = Квадратурное измерение фазы k-го символа в пакете

  • Ik и Qk представляют идеальные (ссылочные) значения. I˜k и Q˜k представление измеренных (принятых) символов.

Блок вычисляет X MER -percentile путем создания гистограммы всех входящих значений MERk. Этот выход предоставляет значение MER, выше которого падает X% от значений MER.

Расширенные возможности

.

См. также

| |

Введенный в R2012a