matlab.unittest.constraints.Tolerance 클래스
네임스페이스: matlab.unittest.constraints
허용오차에 대한 기본 인터페이스
설명
matlab.unittest.constraints.Tolerance
클래스는 허용오차에 대한 인터페이스를 제공합니다. 허용오차는 주어진 데이터형에 대해 근사적 동일성(approximate equality)의 개념을 정의하며, 이를 IsEqualTo
제약 조건뿐 아니라 Within
이름-값 인수를 사용하는 특정 비교 연산자에도 적용할 수 있습니다.
이 클래스에는 세 가지 추상 메서드가 있습니다. 사용자 지정 허용오차 클래스를 생성하려면 matlab.unittest.constraints.Tolerance
에서 클래스를 파생하고 모든 추상 메서드를 구현하십시오.
메서드
supports |
허용오차가 예상 값을 지원하는지 확인합니다. 이 메서드는 허용오차가 지원하는 데이터형을 지정합니다. 입력 인수
출력 인수
|
satisfiedBy |
값이 허용오차 내에 있는지 확인합니다. 이 메서드는 허용오차 정의를 제공합니다. 입력 인수
출력 인수
|
getDiagnosticFor |
비교 중인 값에 대한 진단 정보를 생성합니다. 이 정보는 입력 인수
출력 인수
|
예제
두 DNA 염기 서열의 해밍 거리가 지정된 허용오차 내에 있는지 확인합니다. 길이가 동일한 두 DNA 염기 서열의 경우 해밍 거리는 두 서열에서 뉴클레오티드(문자)가 서로 다른 위치의 개수입니다.
DNA
클래스 만들기
DNA 염기 서열을 표현하기 위해 현재 폴더에 있는 DNA.m
이라는 파일에서 DNA
클래스를 만듭니다.
classdef DNA properties (SetAccess=immutable) Sequence char {mustHaveValidLetters} end methods function dna = DNA(sequence) dna.Sequence = sequence; end end end function mustHaveValidLetters(sequence) validLetters = ... sequence == 'A' | ... sequence == 'C' | ... sequence == 'T' | ... sequence == 'G'; if ~all(validLetters,"all") error("Sequence contains one or more invalid letters.") end end
HammingDistance
클래스 만들기
현재 폴더에 있는 HammingDistance.m
이라는 파일에서 matlab.unittest.constraints.Tolerance
를 서브클래스로 만들어 HammingDistance
클래스를 만듭니다. 허용 가능한 최대 해밍 거리를 지정할 수 있도록 Value
속성을 추가합니다.
Tolerance
클래스에서 파생되는 클래스는 supports
, satisfiedBy
, getDiagnosticFor
메서드를 구현해야 합니다.
supports
메서드 — 허용오차가DNA
클래스의 객체를 지원해야 함을 지정합니다.satisfiedBy
메서드 — 실제 값과 예상 값이 허용오차 내에 있도록 지정합니다. 두 값은 크기가 같아야 하고 해밍 거리가 허용오차 값보다 작거나 같아야 합니다.getDiagosticFor
메서드 — 비교에 대한 진단 정보가 포함된StringDiagnostic
객체를 생성하고 반환합니다.
classdef HammingDistance < matlab.unittest.constraints.Tolerance properties Value end methods function tolerance = HammingDistance(value) tolerance.Value = value; end function tf = supports(~,expected) tf = isa(expected,"DNA"); end function tf = satisfiedBy(tolerance,actual,expected) if ~isSameSize(actual.Sequence,expected.Sequence) tf = false; return end tf = hammingDistance(actual.Sequence,expected.Sequence) <= ... tolerance.Value; end function diagnostic = getDiagnosticFor(tolerance,actual,expected) import matlab.automation.diagnostics.StringDiagnostic if ~isSameSize(actual.Sequence,expected.Sequence) str = "The DNA sequences have different lengths."; else str = "The DNA sequences have a Hamming distance of " ... + hammingDistance(actual.Sequence,expected.Sequence) ... + "." + newline + "The allowable distance is " ... + tolerance.Value + "."; end diagnostic = StringDiagnostic(str); end end end function tf = isSameSize(str1,str2) tf = isequal(size(str1),size(str2)); end function distance = hammingDistance(str1,str2) distance = nnz(str1 ~= str2); end
DNA 염기 서열 비교하기
허용오차를 사용하여 DNA 염기 서열을 비교하려면 먼저 필요한 클래스를 가져오고 대화형 방식 테스트를 위한 테스트 케이스를 만드십시오.
import matlab.unittest.TestCase import matlab.unittest.constraints.IsEqualTo testCase = TestCase.forInteractiveUse;
DNA
객체를 두 개 만들고 허용오차를 지정하지 않은 채로 이들을 비교합니다. 객체가 동일하지 않으므로 테스트가 실패합니다.
sampleA = DNA("ACCTGAGTA"); sampleB = DNA("ACCACAGTA"); testCase.verifyThat(sampleA,IsEqualTo(sampleB))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsEqualTo failed. --> ObjectComparator failed. --> The objects are not equal using "isequaln". Actual Value: DNA with properties: Sequence: 'ACCTGAGTA' Expected Value: DNA with properties: Sequence: 'ACCACAGTA' ------------------ Stack Information: ------------------ In C:\work\CreateCustomToleranceExample.m (CreateCustomToleranceExample) at 45
해밍 거리 1
내에서 DNA 염기 서열이 동일한지 확인합니다. 테스트가 실패하고 테스트 프레임워크는 getDiagnosticFor
메서드로 생성된 추가 진단 정보를 표시합니다.
testCase.verifyThat(sampleA,IsEqualTo(sampleB,"Within",HammingDistance(1)))
Verification failed. --------------------- Framework Diagnostic: --------------------- IsEqualTo failed. --> ObjectComparator failed. --> The objects are not equal using "isequaln". --> The DNA sequences have a Hamming distance of 2. The allowable distance is 1. Actual Value: DNA with properties: Sequence: 'ACCTGAGTA' Expected Value: DNA with properties: Sequence: 'ACCACAGTA' ------------------ Stack Information: ------------------ In C:\work\CreateCustomToleranceExample.m (CreateCustomToleranceExample) at 51
해밍 거리 2
내에서 DNA 염기 서열이 동일한지 확인합니다. 테스트가 통과합니다.
testCase.verifyThat(sampleA,IsEqualTo(sampleB,"Within",HammingDistance(2)))
Verification passed.
버전 내역
R2013a에 개발됨
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)