testconsole.Results

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

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

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

Описание

Метод getResults консоли Error Rate Test Console возвращает образец тестовой консоли. Объект результатов, содержащий данные результатов симуляции. Вы используете методы объекта результатов, чтобы извлечь и построить график данных результатов симуляций.

Свойства

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

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

Методы

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

getData

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

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

Если IterationMode is 'Indexed', тогда d является вектором результатов, соответствующим каждой индексированной комбинации всех значений тестовых параметров, зарегистрированных на консоли Error Rate Test Console.

график

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

Если IterationMode является 'Combinatorial', тогда график содержит набор кривых. Значения сдвига в TestParameter1 управляют осью X, а количество значений сдвига для TestParameter2 определяет, сколько кривых содержит график. Если на консоли Error Rate Test Console зарегистрировано более двух тестовых параметров, кривые соответствуют результатам, полученным с первым значением в векторе сдвига всех параметров, которые не TestParameter1, или TestParameter2.

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

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 имеет значение 'Indexed', когда существует менее двух зарегистрированных тестовых параметров или TestParameter2 установлено на 'None '.

setParsingValues

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

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

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

Значения анализа нерелевантны, когда IterationMode имеет значение 'Indexed'.

getParsingValues

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

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

Значения анализа нерелевантны, когда IterationMode имеет значение 'Indexed'.

Примеры

свернуть все

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

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

bertool

На вкладке Монте-Карло установите 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 в диалоговом окне Симуляция Монте-Карло.

The 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