이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
matlab.unittest.constraints.Tolerance 클래스
패키지: matlab.unittest.constraints
허용오차에 대한 인터페이스
설명
matlab.unittest.constraints.Tolerance
클래스는 허용오차에 대한 인터페이스를 제공합니다. 허용오차는 주어진 데이터형에 대한 대략적인 동일성 개념을 정의하고 Within
이름-값 인수를 사용하는 특정 비교 연산자뿐 아니라 IsEqualTo
제약 조건에도 적용할 수 있습니다.
이 클래스에는 세 가지 추상 메서드가 있습니다. 사용자 지정 허용오차 클래스를 생성하려면 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.unittest.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 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)