このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
matlab.unittest.constraints.Tolerance クラス
名前空間: matlab.unittest.constraints
許容誤差の基本的なインターフェイス
説明
メソッド
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 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.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の 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)