Класс: matlab.perftest.TimeResult
Пакет: matlab.perftest
Создайте график, чтобы сравнить результаты базовых и измерительных тестов
comparisonPlot( создает график, который визуально сравнивает каждую Baseline,Measurement)TimeResult объект в массивах Baseline и Measurement. Сравнение основано на минимуме времени измерения выборки.
comparisonPlot( задает статистическую величину, применяемую к временам выборочных измерений каждого Baseline,Measurement,stat)TimeResult объект в Baseline и Measurement.
comparisonPlot(___, создает график сравнения с дополнительными опциями, заданными одним или несколькими Name,Value)Name,Value аргументы в виде пар. Для примера, comparisonPlot(Baseline,Measurement,'Scale','linear') создает график с линейной шкалой для x - и y - осей.
cp = comparisonPlot(___) возвращает ComparisonPlot объект, заданный как образец matlab.unittest.measurement.chart.ComparisonPlot класс. Использование cp изменение свойств определенного графика сравнения после его создания.
Baseline - Результаты выполнения первичного временного экспериментаmatlab.perftest.TimeResult массивРезультаты выполнения первичного временного эксперимента на тестовом наборе, заданные как TimeResult массив. Baseline должны иметь ту же длину, что и Measurement.
Measurement - Результаты выполнения эксперимента вторичного времениmatlab.perftest.TimeResult массивРезультаты выполнения вторичного временного эксперимента на тестовом наборе, заданные как TimeResult массив. Measurement должны иметь ту же длину, что и Baseline.
stat - Статистика, применяемая к временам выборочных измерений'min'
(по умолчанию) | 'max' | 'mean' | 'median'Статистическая величина, применяемая к шагам измерения выборки каждого TimeResult объект в Baseline и Measurement, заданный как 'min', 'max', 'mean', или 'median'.
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
cp = comparisonPlot(Baseline,Measurement,'SimilarityTolerance',0.05,'Scale','linear')'Scale' - Шкала x - и y - осейШкала x - и y - осей ComparisonPlot объект, заданный как 'log' или 'linear'.
'SimilarityTolerance' - Допустимое отклонение коэффициента статистики от единицы0.1 (по умолчанию) | числовой скалярДопустимое отклонение коэффициента статистики от единицы для пары аналогичных тестов эффективности, заданное как числовое значение между 0 и 1.
SimilarityTolerance задает границы заштрихованной области на графике сравнения. Точки данных, которые попадают в эту область, представляют сходные Baseline и Measurement записи.
'Parent' - Родительский контейнерFigure объект (по умолчанию) | Panel | объекта Tab объектВизуализируйте вычислительную сложность двух алгоритмов сортировки, сортируйте пузырьки и объединяйте сортировку, которые сортируют элементы списка в порядке возрастания. Сортировка Bubble - это простой алгоритм сортировки, который неоднократно проходит по списку, сравнивает соседние пары элементов и меняет элементы, если они находятся в неправильном порядке. Сортировка слиянием является алгоритмом «разделения и завоевания», который использует простоту слияния отсортированных подсписков в новый отсортированный список.
В текущей папке сохраните следующий код в bubbleSort.m.
function y = bubbleSort(x) % Sorting algorithm with O(n^2) complexity n = length(x); swapped = true; while swapped swapped = false; for i = 2:n if x(i-1) > x(i) temp = x(i-1); x(i-1) = x(i); x(i) = temp; swapped = true; end end end y=x; end
Сохраните следующий код в mergeSort.m.
function y = mergeSort(x) % Sorting algorithm with O(n*logn) complexity y = x; % A list of one element is considered sorted if length(x) > 1 mid = floor(length(x)/2); L = x(1:mid); R = x((mid+1):end); % Sort left and right sublists recursively L = mergeSort(L); R = mergeSort(R); % Merge the sorted left (L) and right (R) sublists i = 1; j = 1; k = 1; while i <= length(L) && j <= length(R) if L(i) < R(j) y(k) = L(i); i = i + 1; else y(k) = R(j); j = j + 1; end k = k + 1; end % At this point, either L or R is empty while i <= length(L) y(k) = L(i); i = i + 1; k = k + 1; end while j <= length(R) y(k) = R(j); j = j + 1; k = k + 1; end end end
Создайте следующий параметризованный класс теста, TestSort, который сравнивает эффективность алгоритмов сортировки и слияния пузырьков. The len свойство содержит количество элементов списка, которые необходимо протестировать.
classdef TestSort < matlab.perftest.TestCase properties Data SortedData end properties(ClassSetupParameter) % Create 25 logarithmically spaced values between 10^2 and 10^4 len = num2cell(round(logspace(2,4,25))); end methods(TestClassSetup) function ClassSetup(testCase,len) orig = rng; testCase.addTeardown(@rng,orig) rng('default') testCase.Data = rand(1,len); testCase.SortedData = sort(testCase.Data); end end methods(Test) function testBubbleSort(testCase) while testCase.keepMeasuring y = bubbleSort(testCase.Data); end testCase.verifyEqual(y,testCase.SortedData); end function testMergeSort(testCase) while testCase.keepMeasuring y = mergeSort(testCase.Data); end testCase.verifyEqual(y,testCase.SortedData); end end end
Запустите тесты эффективности для всех тестовых элементов, которые соответствуют 'testBubbleSort' метод и сохраните результаты в Baseline массив. Результаты могут отличаться от показанных результатов.
Baseline = runperf('TestSort','ProcedureName','testBubbleSort');
Running TestSort .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... ..... Done TestSort __________
Запустите тесты эффективности для всех элементов, которые соответствуют 'testMergeSort' метод и сохраните результаты в Measurement массив.
Measurement = runperf('TestSort','ProcedureName','testMergeSort');
Running TestSort .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... Done TestSort __________
Визуально сравните минимум MeasuredTime столбец в Samples таблица для каждой соответствующей пары Baseline и Measurement объекты.
comparisonPlot(Baseline,Measurement);

На этом графике сравнения большинство точек данных синего цвета, потому что они находятся ниже затененной области подобия. Этот результат указывает на наилучшее решение сортировки слияния для большинства тестов. Однако для достаточно маленьких списков сортировка пузырей выполняется лучше, чем или сравнимо с сортировкой слиянием, как показано оранжевой и серой точками на графике.
В качестве сводных данных сравнения график сообщает об улучшении эффективности на 78% из-за сортировки слияния. Это значение является средним геометрическим процентом улучшения, соответствующим всем точкам данных. Если график сравнения содержит недопустимые точки данных, сводные данные сравнений не будет сгенерированы.
Вы можете нажать или навести на любую точку данных, чтобы просмотреть подробную информацию о сравнении результатов измерения времени.

Чтобы изучить эффективность алгоритма сортировки в худшем случае для различных длин списка, создайте сравнительный график на основе максимума времени измерения выборки.
comparisonPlot(Baseline,Measurement,'max');
Уменьшите SimilarityTolerance на 0.01 при сравнении максимума времени измерения образца. Верните ComparisonPlot объект в cp чтобы можно было изменить его свойства позже.
cp = comparisonPlot(Baseline,Measurement,'max','SimilarityTolerance',0.01);

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.