matlab.unittest.constraints.Tolerance クラス
名前空間: matlab.unittest.constraints
許容誤差の基本的なインターフェイス
説明
matlab.unittest.constraints.Tolerance
クラスは、許容誤差のインターフェイスを提供します。許容誤差は特定のデータ型に対する近似等価性の概念を定義し、名前と値の引数 Within
を使用して IsEqualTo
制約および特定の比較演算子に適用できます。
クラスには 3 つの抽象メソッドがあります。カスタム許容誤差クラスを作成するには、matlab.unittest.constraints.Tolerance
からクラスを派生させ、すべての抽象メソッドを実装します。
メソッド
パブリック メソッド
supports |
期待される値が許容誤差でサポートされるかどうかを判別します。このメソッドは、許容誤差でサポートされるデータ型を指定します。 入力引数
出力引数
|
satisfiedBy |
値が許容誤差の範囲内であるかどうかを判別します。このメソッドは、許容誤差の定義を提供します。 入力引数
出力引数
|
getDiagnosticFor |
値の比較に関する診断情報を生成します。この情報は 入力引数
出力引数
|
例
カスタム許容誤差の作成
2 つの DNA 配列のハミング距離が指定された許容誤差の範囲内であるかどうかを判別します。2 つの同じ長さの 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;
2 つの 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
DNA 配列がハミング距離 1
の範囲内で等価であることを検証します。テストは失敗し、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
DNA 配列がハミング距離 2
の範囲内で等価であることを検証します。テストはパスします。
testCase.verifyThat(sampleA,IsEqualTo(sampleB,"Within",HammingDistance(2)))
Verification passed.
バージョン履歴
R2013a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは 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)