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