Класс: matlab.unittest.measurement.MeasurementResult
Пакет: matlab.unittest.measurement
Примените функцию через выборки MeasurementResult
массив
[B1,...,Bm] = samplefun(fh,R)
[B1,...,Bm] = samplefun(fh,R,'UniformOutput',tf)
[B1,...,Bm] = samplefun(
применяет функциональный fh
,R
)fh
через выборки на каждом элементе MeasurementResult
массив. Каждый выходной аргумент от samplefun
соответствует выходному аргументу от fh
и имеет тот же размер и форму как R
.
[B1,...,Bm] = samplefun(
указывает если выход fh
,R
,'UniformOutput',tf
)fh
может быть возвращен без инкапсуляции в массиве ячеек. По умолчанию, fh
должен возвратить скалярные значения, которые могут быть конкатенированы в массив.
fh
— Функция, чтобы применятьсяФункция, чтобы применяться через выборки на каждый элемент MeasurementResult
массив, определенный функцией указатель.
R
— Результаты выполнения измерения экспериментируют на тестовом набореMeasurementResult
массивРезультаты выполнения измерения экспериментируют на тестовом наборе, заданном как MeasurementResult
массив.
tf
— Индикатор, ли fh
возвращает универсальные значенияtrue
(значение по умолчанию) | false
Индикатор, ли fh
возвращает универсальные значения, заданные как true
или false
tf
true
по умолчанию, который указывает на тот fh
возвращает скалярные значения, которые могут быть конкатенированы в массив. Если tf
false
, выходные параметры fh
может иметь различные размеры и типы данных. samplefun
возвращает эти неоднородные выходные параметры в массиве ячеек.
В вашей текущей рабочей папке создайте основанный на классах тест, preallocationTest.m
, это сравнивает различные методы предварительного выделения.
classdef preallocationTest < matlab.perftest.TestCase methods(Test) function testOnes(testCase) x = ones(1,1e7); end function testIndexingWithVariable(testCase) id = 1:1e7; x(id) = 1; end function testIndexingOnLHS(testCase) x(1:1e7) = 1; end function testForLoop(testCase) for i=1:1e7 x(i) = 1; end end end end
Создайте тестовый набор.
suite = testsuite('preallocationTest');
Создайте переменный эксперимент времени и запустите тесты.
import matlab.perftest.TimeExperiment
experiment = TimeExperiment.limitingSamplingError;
R = run(experiment,suite);
Running preallocationTest .......... .......... .......... ......Warning: Target Relative Margin of Error not met after running the MaxSamples for preallocationTest/testOnes. .... .......... .......... .......... .......... ..... Done preallocationTest __________
Для каждого тестового элемента найдите среднее время выборок.
M = samplefun(@mean,R)
M = 0.0350 0.1351 0.0789 0.7337
Для каждого тестового элемента найдите минимальное время и индекс к минимальному времени.
[M,I] = samplefun(@min,R)
M = 0.0258 0.1169 0.0691 0.6531 I = 27 3 1 1
В вашей текущей рабочей папке создайте основанный на классах тест, preallocationTest.m
, это сравнивает различные методы предварительного выделения.
classdef preallocationTest < matlab.perftest.TestCase methods(Test) function testOnes(testCase) x = ones(1,1e7); end function testIndexingWithVariable(testCase) id = 1:1e7; x(id) = 1; end function testIndexingOnLHS(testCase) x(1:1e7) = 1; end function testForLoop(testCase) for i=1:1e7 x(i) = 1; end end end end
Создайте тестовый набор.
suite = testsuite('preallocationTest');
Создайте фиксированный эксперимент времени с 26 демонстрационными измерениями и запустите тесты.
import matlab.perftest.TimeExperiment
experiment = TimeExperiment.withFixedSampleSize(26);
R = run(experiment,suite);
Running preallocationTest .......... .......... .......... .......... .......... .......... .......... .......... .......... .......... .... Done preallocationTest __________
В вашей текущей рабочей папке создайте функцию, customSampleFun
, это вычисляет среднее значение каждой из этих 26 выборок, преобразует среднее значение в миллисекунды и возвращает вектор символов, указывающий, было ли среднее время быстрым или медленным.
function [mean_ms,speed] = customSampleFun(S) threshold_ms = 100; mean_ms = mean(S)*1e3; if mean_ms < threshold_ms speed = 'fast'; else speed = 'slow'; end end
Примените customSampleFun
к каждому элементу в MeasurementResult
массив. Поскольку векторы символов не являются скаляром, задают UniformOutput
как ложь.
[mean_ms,speed] = samplefun(@customSampleFun,R,'UniformOutput',false)
mean_ms = 1×4 cell array [30.9500] [142.7037] [83.9830] [806.3446] speed = 1×4 cell array 'fast' 'slow' 'fast' 'slow'
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.