samplefun
클래스: matlab.unittest.measurement.MeasurementResult
네임스페이스: matlab.unittest.measurement
MeasurementResult
배열의 샘플에 함수 적용
구문
[B1,...,Bm] = samplefun(fh,R)
[B1,...,Bm] = samplefun(fh,R,'UniformOutput',tf)
설명
입력 인수
MeasurementResult
배열의 각 요소에 대한 샘플에 적용할 함수로, 함수 핸들로 지정됩니다.
테스트 스위트에서 계측 실험을 실행한 결과로, MeasurementResult
배열로 지정됩니다.
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 __________
26개 샘플 각각의 평균을 계산하고 이 평균을 밀리초로 변환하여 평균 시간이 빠른지 느린지를 나타내는 문자형 벡터를 반환하는 함수 customSampleFun
을 현재 작업 폴더에 만듭니다.
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
을 false로 지정합니다.
[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'
버전 내역
R2017a에 개발됨
참고 항목
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)