exponenta event banner

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

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

Интервал измерения, в течение которого вычисляется РВК, указанный в выборках как действительное положительное целое число. Это свойство доступно, когда 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-percentile MER

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

XPercentileValue

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

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

SymbolCountOutputPort

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

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

Методы

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

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

reset

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

Примеры

свернуть все

Создайте объект 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);

Определите значения среднеквадратичного, минимального и 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 сигнала, используя оба объекта. SNR увеличивается на 1 дБ от подкадра к подкадру. Для merNoReset500 самых последних символов используются для вычисления оценки. В этом случае используется скользящее окно, так что в качестве основы для оценки используется весь кадр данных. Для 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 более точно отражают текущее SNR.

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, где результат усредняется по поднесущим. Измерьте РВК. Имеется четыре входа, соответствующих каждому из 4 символов OFDM.

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

   11.2338   12.5315   12.8882   12.7015

Перезаписать объект MER, где результат усредняется по символам OFDM. Измерьте РВК. Имеется 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 является мерой SNR в модулированном сигнале, вычисленном в дБ. Символы MER over N:

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

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

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

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

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

где:

  • ek = ek = (Ik−I˜k) 2 + (Qk−Q˜k) 2

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

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

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

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

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

.

См. также

| |

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