exponenta event banner

testconsole. Результаты

(Подлежит удалению) Получает результаты моделирования тестовой консоли

Совместимость

testconsole.Results будут удалены в следующем выпуске. Использовать comm.ErrorRate или bertool вместо этого. Дополнительные сведения см. в разделе Вопросы совместимости.

Описание

Метод getResults консоли тестирования частоты ошибок возвращает экземпляр testconsole. Объект результатов, содержащий данные результатов моделирования. Методы объекта результатов используются для извлечения и печати данных результатов моделирования.

Свойства

Тестовая площадка. Объект Results имеет свойства, показанные в следующей таблице. Все свойства доступны для записи, за исключением явно отмеченных.

СобственностьОписание
TestConsoleNameКонсоль тестирования частоты ошибок. Это свойство недоступно для записи.
Имя тестируемой системыИмя тестируемой системы, для которой консоль тестирования частоты ошибок получила результаты. Это свойство недоступно для записи.
IterationModeРежим итерации консоли тестирования частоты ошибок, используемой для получения результатов. Это свойство недоступно для записи.
TestPointУкажите имя зарегистрированной контрольной точки, для которой объект результатов анализирует результаты. Методы getData, plot и semilogy объекта Results возвращают данные или создают график для контрольной точки, указанной свойством StartPoint.
МетрикаУкажите имя метрики теста, для которой объект результатов анализирует результаты. Методы getData, plot и semilogy объекта Results возвращают данные или создают график для метрики, заданной свойством Metric.
TestParameter1Задает имя первой независимой переменной, для которой объект results анализирует результаты.
TestParameter2Задает имя второй независимой переменной, для которой объект results анализирует результаты.

Методы

Тестовая площадка. Объект результатов имеет следующие методы.

getData

d = getData(r) возвращает матрицу данных результатов d, доступную в объекте результатов r. Возвращенные результаты соответствуют контрольной точке, в настоящее время указанной в TestPoint свойства r и в тестовую метрику, в настоящее время указанную в Metric свойство r.

Если IterationMode является «комбинаторным», то d является матрицей, содержащей результаты для всех значений развертки, доступных в параметрах теста, указанных в TestParameter1 и TestParameter2 свойства. Строки матрицы соответствуют результатам для всех значений сдвига, доступных в TestParameter1. Столбцы матрицы соответствуют результатам для всех значений сдвига, доступных в TestParameter2. Если в консоли тестирования частоты ошибок зарегистрировано более двух параметров теста, d содержит результаты, соответствующие первому значению в векторе сдвига всех параметров, которые не являются TestParameter1 или TestParameter2.

Если IterationMode имеет значение «Indexed», то d - вектор результатов, соответствующий каждой индексированной комбинации всех значений тестовых параметров, зарегистрированных в консоли тестирования частоты ошибок.

график

plot(r) создает график для результатов, доступных в объекте результатов r. График соответствует контрольной точке и контрольной метрике, указанной TestPoint и Metric свойства r

Если IterationMode «Комбинаторный», то график содержит набор кривых. Значения сдвига в TestParameter1 управляют осью X, а количество значений сдвига для TestParameter2 указывает, сколько кривых содержится на графике. Если в консоли тестирования частоты ошибок зарегистрировано более двух параметров теста, кривые соответствуют результатам, полученным с первым значением в векторе сдвига всех параметров, которые не являются TestParameter1 или TestParameter2.

Если IterationMode имеет значение Indexed, графики недоступны.

полутупоумный

semilogy(...) является таким же, как plot(...), за исключением того, что ось Y использует логарифмический (базовый 10) масштаб.

прибой

surf (r) создает 3-D, цвет, график поверхности для результатов, доступных в results объект, р. График поверхности соответствует следующим элементам:

  • Контрольная точка, заданная с помощью TestPoint имущества results объект

  • Контрольная метрика, которая в настоящее время указана в Metric имущества results объект

Можно задать пары параметр/значение для results объект, устанавливающий дополнительные свойства графика поверхности.

При выборе параметра «Комбинаторный» для IterationMode значения сдвига, доступные в параметре теста, заданном для свойства TestParameter1, управляют осью X графика поверхности. Значения сдвига, доступные в параметре теста, заданном для свойства TestParameter2, управляют осью y.

Если на тестовом пульте зарегистрировано более двух параметров теста, график поверхности соответствует результатам, полученным с предварительно заданными значениями параметра sweep с помощью метода setParingValues объекта результатов.

Текущие значения синтаксического анализа отображаются путем вызова метода getParingValues объекта результатов. Значения синтаксического анализа по умолчанию соответствуют первому значению в векторе сдвига каждого параметра теста. По умолчанию метод перехода игнорирует значения синтаксического анализа для любых параметров, заданных в данный момент как TestParameter1 или TestParameter2.

Графики поверхности недоступны, если IterationMode имеет значение Indexed, если существует менее двух зарегистрированных параметров теста или TestParameter2 установлено значение None .

setParsingValues

setParsingValues(R,'ParameterName1', 'Value1', ... 'ParameterName2', 'Value2', ...) устанавливает значения синтаксического анализа в значения, заданные с помощью пар параметр-значение. Входы имени параметра должны соответствовать именам зарегистрированных параметров теста, а входы значений должны соответствовать допустимому значению сдвига параметра теста.

Этот метод используется для указания отдельных значений сдвига для параметров теста, которые отличаются от значений для TestParameter1 и TestParameter2. При определении этого метода results объект возвращает значения данных или графики, соответствующие значениям сдвига, заданным для метода setParingValues. Значения синтаксического анализа по умолчанию соответствуют первому значению в векторе сдвига каждого параметра теста.

Текущие значения синтаксического анализа отображаются путем вызова getParsingValues метод объекта результатов. Можно задать значения синтаксического анализа для параметров в TestParameter1 и TestParameter2, но объект результатов игнорирует значения при получении данных или возврате графиков.

Синтаксический анализ значений не имеет значения, если IterationMode «Индексировано».

getParsingValues

getParsingValues отображает текущие значения синтаксического анализа для консоли тестирования частоты ошибок.

s = getParsingValues(r) возвращает структуру s с именами полей, равными именам зарегистрированных тестовых параметров, и со значениями, соответствующими текущим значениям синтаксического анализа.

Анализ значений не имеет значения, если IterationMode имеет значение Indexed.

Примеры

свернуть все

Используйте приложение Bit Error Rate Analysis для вычисления BER как функции Eb/N0. Приложение анализирует производительность с помощью моделирования Monte Carlo функций MATLAB ® и моделей Simulink ® или теоретических выражений закрытой формы для выбранных типов систем связи. Код в функции mpsksim.m обеспечивает моделирование M-PSK, которое можно запустить с вкладки Monte Carlo приложения.

Откройте приложение Bit Error Rate Analysis с помощью bertool функция.

bertool

На вкладке Monte Carlo задайте для параметра диапазона Eb/N0 значение 1:1:5 и параметр Function name для mpsksim.

Откройте окно mpsksim функция для редактирования, установка M=2и сохраните измененный файл.

open mpsksim

Запустить mpsksim.m как настроено, щелкнув Выполнить на вкладке Monte Carlo в приложении.

После того как приложение смоделирует набор точек Eb/N0, обновите имя результатов набора данных BER, выбрав simulation0 в поле BER Data Set и ввод M=2 для переименования набора результатов. Легенда на рисунке BER обновляет метку до M=2.

Обновить значение для M в mpsksim , повторяя этот процесс для M = 4, 8, и 16. Например, эти рисунки приложения Bit Error Rate Analysis и окна BER Figure показывают результаты для различных M значения.

Параллельный сдвиг SNR с использованием приложения для анализа частоты битовых ошибок

Использование parfor можно запустить каждую точку Eb/N0 параллельно, настроив функцию моделирования аналогично функции mpsksim_parfor.m. Поскольку parfor невозможно передать сигнал остановки параллельным работникам, невозможно остановить моделирование, нажав кнопку Stop (Остановить) в диалоговом окне Monte Carlo Simulation (Моделирование Монте-Карло).

commtest.ErrorRate и testconsole.Results пакеты объектов будут удалены в следующем выпуске. Они могут использоваться для выполнения сдвига параметров для анализа производительности системы связи. В этом примере показан рабочий процесс, в котором они используются, а также рекомендуемые альтернативные рабочие процессы.

Получение частоты битовых ошибок и частоты символьных ошибок системы M-PSK для различных порядков модуляции и значений EbNo. Тестируемая система commtest.MPSKSystem.

% Create an M-ary PSK system
systemUnderTest = commtest.MPSKSystem;

% Instantiate an Error Rate Test Console and attach the system
errorRateTester = commtest.ErrorRate(systemUnderTest);
errorRateTester.SimulationLimitOption = ...
  'Number of errors or transmissions';
errorRateTester.MaxNumTransmissions = 1e5;

% Set sweep values for simulation test parameters
setTestParameterSweepValues(errorRateTester,'M',2.^[1 2 3 4], ...
  'EbNo',(-5:10))

% Register a test point
registerTestPoint(errorRateTester,'MPSK_BER', ...
  'TxInputBits','RxOutputBits')

% Get information about the simulation settings
info(errorRateTester)
Warning: commtest.ErrorRate will be removed in the future. 
Use comm.ErrorRate or bertool instead. See R2019b Communications 
Toolbox Release Notes for more information.

Test console name:           commtest.ErrorRate
System under test name:      commtest.MPSKSystem
Available test inputs:       NumTransmissions, RandomIntegerSource
Registered test inputs:      NumTransmissions
Registered test parameters:  EbNo, M
Registered test probes:      
  RxOutputBits, RxOutputSymbols, TxInputBits, TxInputSymbols
Registered test points:      MPSK_BER
Metric calculator functions: @commtest.ErrorRate.defaultErrorCalculator
Test metrics:                ErrorCount, TransmissionCount, ErrorRate
% Run the M-PSK simulations
run(errorRateTester)
Starting parallel pool (parpool) using the 'local' profile ...
Connected to the parallel pool (number of workers: 12).
12 workers available for parallel computing. Simulations will be 
distributed among these workers. 
Running simulations...
% Get the results
mpskResults = getResults(errorRateTester);
Warning: testconsole.Results will be removed in the future. See 
R2019b Communications Toolbox Release Notes for more information.
% Get a semi-log scale plot of EbNo versus bit error rate for
% different values of modulation order M
mpskResults.TestParameter2 = 'M';
semilogy(mpskResults,'*-')

Выполните моделирование частоты ошибок над M = 2. ^ (1:4) и EbNo = -5: 10. Использоватьcomm.ErrorRate для сбора данных как о частоте ошибок в битах (BER), так и о частоте ошибок в символах (SER). Выполните моделирование, чтобы собрать не менее 100 ошибок символов или не более 1е5 символов.

% Set the M sweep values same as the commtest.ErrorRate object
getTestParameterSweepValues(errorRateTester,'M')
ans = 1×4

     2     4     8    16

MSweep = 2.^[1 2 3 4];
% Set EbNo sweep values same as the commtest.ErrorRate object
getTestParameterSweepValues(errorRateTester,'EbNo')
ans = 1×16

 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10

EbNoSweep = -5:10;
% Set minumum number of errors same as the commtest.ErrorRate object
errorRateTester.MinNumErrors
ans = 100
minNumErrors = 100;
% Set maximum number of transmissions same as the commtest.ErrorRate
% object. In this example a transmission is a symbol.
errorRateTester.MaxNumTransmissions
ans = 100000
MaxNumTransmissions = 1e5;
% Set frame length same as the commtest.ErrorRate object
errorRateTester.FrameLength
ans = 500
frameLength = 500;
% Find out if there is a parallel pool and how many workers are available
[licensePCT,~] = license('checkout','distrib_computing_toolbox');
if (licensePCT && ~isempty(ver('parallel')))
    p = gcp;
    if isempty(p)
        numWorkers = 1;
    else
        numWorkers = p.NumWorkers
    end
else
    numWorkers = 1;
end
numWorkers = 12
minNumErrorsPerWorker = minNumErrors/numWorkers;
maxNumSymbolsPerWorker = MaxNumTransmissions/numWorkers;

% Store results in an array, where first dimension is M and second
% dimension is EbNo. Initialize the vector with NaN values.
ser = nan(length(MSweep),length(EbNoSweep));
ber = nan(length(MSweep),length(EbNoSweep));

% First sweep is over M (modulation order)
for MIdx = 1:length(MSweep)
    M = MSweep(MIdx);
    bitsPerSymbol = log2(M);
    
    % Second sweep is over EbNo
    for EbNoIdx = 1:length(EbNoSweep)
        EbNo = EbNoSweep(EbNoIdx);
        
        SNR = EbNo+10*log10(bitsPerSymbol);
        
        numSymbolErrors = zeros(numWorkers,1);
        numBitErrors = zeros(numWorkers,1);
        numSymbols = zeros(numWorkers,1);
        
        parfor worker = 1:numWorkers
            symErrRate = comm.ErrorRate;
            bitErrRate = comm.ErrorRate;
            
            while (numSymbolErrors(worker) < minNumErrorsPerWorker) ...
                    || (numSymbols(worker) < maxNumSymbolsPerWorker)
                % Generate frameLength source outputs
                txMsg = randi([0 M-1],frameLength,1);
                
                % Modulate the data
                txOutput = pskmod(txMsg,M,0,'gray');
                % Pass data through an AWGN channel with current SNR value
                chnlOutput  = awgn(txOutput,SNR,'measured',[],'dB');
                % Demodulate the data
                rxOutput = pskdemod(chnlOutput,M,0,'gray');
                
                % Calculate number of symbol errors
                symErrVal = symErrRate(txMsg,rxOutput);
                numSymbolErrors(worker) = symErrVal(2);
                numSymbols(worker) = symErrVal(3);
                
                % Convert symbol streams to bit streams
                bTx = de2bi(txMsg,bitsPerSymbol,'left-msb')';
                bTx = bTx(:);
                bRx = de2bi(rxOutput,bitsPerSymbol,'left-msb')';
                bRx = bRx(:);
                
                % Calculate number of bit errors
                bitErrVal = bitErrRate(bTx,bRx);
                numBitErrors(worker) = bitErrVal(2);
            end
        end
        
        ber(MIdx,EbNoIdx) = sum(numBitErrors)/(sum(numSymbols)*bitsPerSymbol);
        ser(MIdx,EbNoIdx) = sum(numSymbolErrors)/sum(numSymbols);
    end
end
% Plot results
semilogy(EbNoSweep,ber,'*-')
grid on
title('MPSK BER')
xlabel('Eb/No')
ylabel('BER')
legendText = cell(length(MSweep),1);
for p=1:length(MSweep)
    legendText{p} = sprintf('M: %d',MSweep(p));
end
legend(legendText)

Вопросы совместимости

развернуть все

Предупреждает, начиная с R2019b

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