comm.MER

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

Описание

comm.MER (ошибочное отношение модуляции), объект измеряет отношение сигнал-шум (SNR) в цифровых приложениях модуляции. Можно использовать измерения 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. Этот объект измеряет отношение сигнал-шум (SNR) в цифровых приложениях модуляции.

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 в виде логического скаляра. Чтобы создать выходной порт для минимальных измерений MER, установите это свойство на true. Значением по умолчанию является false.

XPercentileMEROutputPort

X- выходной порт измерения MER

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

XPercentileValue

X- значение процентили

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

SymbolCountOutputPort

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

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

Методы

сбросСбросьте состояния объекта измерения MER
шагИзмерьте ошибочное отношение модуляции
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

свернуть все

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

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')

Создайте модулятор 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 th символ

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

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

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

где:

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

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

  • Qk = измерение фазы Quadrature k th символ в пакете

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

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

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

Смотрите также

| |

Представленный в R2012a