коммуникация. 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

МЕР=10·журнал10(n=1N(Ik2+Qk2)n=1N(ek)) dB,

MER для k th символ

MERk=10*журнал10(1Nn=1N(Ik2+Qk2)ek) dB.

Минимальный 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