testconsole.Results

(Чтобы быть удаленным), Получает результаты тестовых консольных симуляций

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

testconsole. Результаты будут удалены в будущем релизе. Используйте comm.ErrorRate или bertool вместо этого. Для получения дополнительной информации см. Вопросы совместимости.

Описание

getResults метод Тестовой Консоли Коэффициента ошибок возвращает экземпляр testconsole.Results object, содержащего данные о результатах симуляции. Вы используете методы объекта результатов получить и отобразить данные о результатах симуляций на графике.

Свойства

testconsole.Results object показали свойства в следующей таблице. Все свойства перезаписываемы за исключением тех явным образом отмеченных в противном случае.

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

Методы

testconsole.Results object имеет следующие методы.

getData

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

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

Если IterationMode 'Индексируется', затем d является вектором из результатов, соответствующих каждой индексируемой комбинации всех тестовых значений параметров, указанных к Тестовой Консоли Коэффициента ошибок.

график

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

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

Никакие графики не доступны, когда 'IterationMode' 'Индексируется'.

semilogy

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

surf

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

  • Тестовая точка вы задаете использование TestPoint свойство results объект

  • Тестовая метрика в настоящее время вы задаете в Metric свойство results объект

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

Когда вы выбираете 'Combinatorial' для IterationMode, значения развертки, доступные в тестовом параметре, вы задаете для управления свойством TestParameter1 ось X объемной поверхностной диаграммы. Значения развертки, доступные в тестовом параметре, который вы задаете для свойства TestParameter2, управляют осью Y.

Если больше чем два тестовых параметра указаны к тестовой консоли, объемная поверхностная диаграмма соответствует результатам, полученным со значениями развертки параметра, ранее заданными с setParsingValues методом объекта результатов.

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

Никакие объемные поверхностные диаграммы не доступны, если IterationMode 'Индексируется', когда меньше чем два зарегистрированных тестовых параметра существуют, или TestParameter2 не установлен ни в 'Один'.

setParsingValues

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

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

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

Анализирующие значения не важны когда IterationMode 'Индексируется'.

getParsingValues

getParsingValues отображает текущие значения парсинга для Тестовой Консоли Коэффициента ошибок.

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

Анализирующие значения не важны, когда IterationMode 'Индексируется'.

Примеры

свернуть все

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

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

bertool

На вкладке Monte Carlo, набор Eb/N0 параметр области значений к 1:1:5 и параметр Имени функции к 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 показывают результаты для различного M значения.

Параллельная развертка ОСШ Используя приложение Bit Error Rate Analysis

Используя 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 ошибок символа или для максимума 1e5 символы.

% 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