Main Content

Simulink.sdi.constraints.MatchesSignal 클래스

네임스페이스: Simulink.sdi.constraints
슈퍼클래스: matlab.unittest.constraints.Constraint

시뮬레이션 데이터 인스펙터를 사용하여 시계열 데이터를 허용오차와 비교하는 제약 조건

설명

테스트의 일환으로 시계열 데이터를 예상 값과 비교하려면 Simulink.sdi.constraints.MatchesSignal 제약 조건을 사용하십시오. 이 비교에 절대, 상대 및 시간 허용오차 값의 조합을 사용하도록 제약 조건을 구성할 수 있습니다. Simulink.sdi.constraints.MatchesSignalOptions 객체 또는 하나 이상의 이름-값 쌍 인수를 사용하여 비교 동작을 구성하기 위한 추가 옵션을 지정할 수도 있습니다. 허용오차 및 정렬 옵션이 비교에 미치는 영향에 대한 자세한 내용은 How the Simulation Data Inspector Compares Data 항목을 참조하십시오.

참고

MatchesSignal 제약 조건은 시뮬레이션 데이터 인스펙터를 사용하여 비교를 수행하며 다음 제품 중 하나에 대한 라이선스가 필요합니다.

  • Simulink®

  • Signal Processing Toolbox™

  • MATLAB® Coder™

  • Fixed-Point Designer™

생성

설명

예제

MatchesSignal(expVal)은 실제 값을 나타내는 시계열 데이터가 예상 값 expVal로 지정된 데이터와 일치하는지 여부를 결정하는 제약 조건을 만듭니다.

예제

MatchesSignal(expVal,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 속성을 가진 제약 조건을 만듭니다.

입력 인수

모두 확장

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'IgnoringDataTypes',true

예상 값과 다른 데이터형을 갖는 실제 값에 대한 제약 조건 민감도를 구성합니다.

  • false — 제약 조건이 예상 값과 실제 값의 데이터형이 일치하는지 여부를 검사합니다.

  • true — 제약 조건이 예상 값과 실제 값 간의 데이터형 불일치에 민감하지 않습니다.

예: 'IgnoringDataTypes',true

예상 값과 실제 값 간에 정렬되지 않는 하나 이상의 신호에 대한 제약 조건 민감도를 구성합니다.

  • false — 제약 조건이 예상 값과 실제 값 간에 정렬되지 않는 신호를 검사합니다.

  • true — 제약 조건이 예상 값과 실제 값 간에 정렬되지 않는 하나 이상의 신호에 민감하지 않습니다.

예: 'IgnoringSignalsNotAligned',true

예상 값으로 정의된 시간 구간을 벗어난 데이터를 포함하는 실제 값에 대한 제약 조건 민감도를 구성합니다.

  • false — 제약 조건이 실제 값에 예상 값으로 정의된 시간 구간을 벗어난 데이터가 포함되어 있는지 여부를 검사합니다.

  • true — 제약 조건이 예상 값으로 정의된 시간 구간을 벗어난 데이터를 포함하는 실제 값에 민감하지 않습니다.

예: 'IgnoringExtraData',true

비교를 위한 정렬 기준. 예상 값에 두 개 이상의 신호가 포함된 경우 시뮬레이션 데이터 인스펙터 비교 알고리즘은 예상 값과 실제 값 간의 비교를 위해 신호를 정렬합니다. 기본적으로 시뮬레이션 데이터 인스펙터는 데이터 소스, 블록 경로, SID, 신호 이름순으로 신호를 정렬합니다. 시뮬레이션 데이터 인스펙터 정렬 알고리즘에 대한 자세한 내용은 How the Simulation Data Inspector Compares Data 항목을 참조하십시오.

다음 옵션을 하나 이상 고려할 순서대로 나열한 string형 배열로 정렬 기준을 지정하십시오.

  • BlockPath — 신호의 소스 블록에 대한 경로입니다.

  • SID — 자동으로 할당되는 Simulink 식별자입니다.

  • SignalName — 신호의 이름입니다.

  • DataSource — 변수의 경로입니다.

예: 'AligningBy',["SignalName","BlockPath"]는 신호 이름과 블록 경로순으로 신호 정렬을 지정합니다.

속성

모두 확장

비교 기준으로 사용할 예상 값. 예상 값에 대한 데이터는 데이터 값과 시간의 쌍으로 구성되어야 합니다. 데이터는 시뮬레이션 데이터 인스펙터에서 지원하는 모든 형식이 될 수 있습니다. 시뮬레이션 데이터 인스펙터에는 샘플 값을 시간과 연관 짓는 형식의 데이터가 필요합니다. 지원되는 형식에는 timeseries, Structure with timeDataset이 포함됩니다.

데이터가 포함된 작업 공간의 변수를 사용하거나 데이터가 포함된 파일의 전체 경로 또는 파일 이름을 string형 스칼라 또는 문자형 배열로 지정하여 제약 조건의 예상 값을 지정할 수 있습니다.

특성:

GetAccess
public
SetAccess
immutable

제약 조건에 대한 비교를 구성하는 옵션을 지정하는 Simulink.sdi.constraints.MatchesSignalOptions 객체입니다. 기본적으로, 비교는 시뮬레이션 데이터 인스펙터용 디폴트 정렬 설정을 사용하며 허용 기준이 엄격하므로 비교 시 어떤 검사도 무시하지 않습니다. MatchesSignalOptions 속성을 사용하여 제약 조건이 예상 및 실제 실행에서 신호를 정렬하는 방법과 제약 조건을 사용하는 테스트가 다음에 대해 민감한지 여부를 구성할 수 있습니다.

  • 예상 값과 다른 데이터형을 갖는 실제 값.

  • 예상 실행과 실제 실행 간에 정렬되지 않는 하나 이상의 신호.

  • 예상 값으로 정의된 시간 구간을 벗어난 데이터를 포함하는 실제 값.

개별 이름-값 쌍 인수를 사용하거나 Simulink.sdi.constraints.MatchesSignalOptions 객체를 값으로 하는 이름-값 쌍 'WithOptions'를 사용하여 제약 조건에 대한 MatchesSignalOptions 속성을 지정할 수 있습니다. MatchesSignalOptions 객체를 사용하여 MatchesSignalOptions 속성을 지정할 때 단일 이름-값 쌍을 사용하여 제약 조건을 사용하는 비교를 위한 모든 옵션을 구성할 수 있습니다.

특성:

GetAccess
public
SetAccess
immutable

데이터형: Simulink.sdi.constraints.MatchesSignalOptions

제약 조건을 사용하는 비교를 위한 절대 허용오차 비교 시에 시뮬레이션 데이터 인스펙터가 허용오차 값을 사용하는 방법에 대한 자세한 내용은 How the Simulation Data Inspector Compares Data 항목을 참조하십시오.

예: 0.1

예: 2

특성:

GetAccess
public
SetAccess
immutable

데이터형: double

제약 조건을 사용하는 비교를 위한 상대 허용오차 예를 들어, 비교를 위해 10% 허용오차를 사용하려면 0.1을 지정하십시오. 비교 시에 시뮬레이션 데이터 인스펙터가 허용오차 값을 사용하는 방법에 대한 자세한 내용은 How the Simulation Data Inspector Compares Data 항목을 참조하십시오.

예: 0.05

특성:

GetAccess
public
SetAccess
immutable

데이터형: double

제약 조건을 사용한 비교를 위한 시간 허용오차(단위: 초). 비교 시에 시뮬레이션 데이터 인스펙터가 허용오차 값을 사용하는 방법에 대한 자세한 내용은 How the Simulation Data Inspector Compares Data 항목을 참조하십시오.

예: 0.001

특성:

GetAccess
public
SetAccess
immutable

데이터형: double

예제

모두 축소

이 예제에서는 Simulink.sdi.constraints.MatchesSignal 제약 조건을 사용하여 작업 공간에서 생성된 데이터를 사용하는 시계열 데이터를 비교하는 방법을 보여줍니다. MatchesSignal 제약 조건을 사용하여 파일의 측정된 테스트 데이터와 기록된 시뮬레이션 출력값을 포함하여 여러 소스의 데이터를 비교할 수 있습니다.

MatchesSignal 제약 조건을 사용하면 비교에 사용할 절대, 상대 및 시간 허용오차를 지정할 수 있습니다. MatchesSignal 제약 조건은 정렬 및 동기화 단계를 포함하는 시뮬레이션 데이터 인스펙터 비교 알고리즘을 사용합니다. 알고리즘에 대한 자세한 내용은 How the Simulation Data Inspector Compares Data 항목을 참조하십시오.

MatchesSignal 제약 조건은 시계열 비교를 위해 시뮬레이션 데이터 인스펙터를 사용하며 다음 제품 중 하나가 필요합니다.

  • Simulink®

  • Signal Processing Toolbox™

  • MATLAB Coder™

  • Fixed-Point Designer™

시계열 데이터 만들기

이 예제에서는 설명을 도울 목적으로만 timeseries 형식의 작업 공간 데이터를 생성합니다. MatchesSignal 제약 조건을 사용하여 시뮬레이션 출력값 또는 테스트 데이터가 포함된 파일과 같은 다른 소스에서 온 데이터를 비교할 수 있으며, 제약 조건은 시뮬레이션 데이터 인스펙터에서 지원하는 모든 형식의 시계열 데이터를 비교할 수 있습니다.

이 예제에서, 첫 번째 신호는 이름이 Wave Data인 사인파에 대한 데이터를 포함하는 timeseries 객체입니다.

time = 0:0.1:20;
sig1vals = sin(2*pi/5*time);
sig1_ts = timeseries(sig1vals,time);
sig1_ts.Name = 'Wave Data';

두 번째 신호도 동일한 주파수의 사인파이며, 약간의 감쇠가 있고 다른 레이트로 샘플링됩니다. MatchesSignal 제약 조건에 대한 비교 알고리즘에는 동기화 단계가 포함되어 있으므로 서로 다른 시간 벡터를 갖는 이 두 신호를 비교해도 항상 테스트 실패가 발생하는 것은 아닙니다. 두 번째 신호는 또한 정렬 알고리즘이 비교를 위해 신호를 짝지을 수 있도록 Wave Data로 이름이 지정됩니다.

time2 = 0:0.05:20;
sig2vals = 0.98*sin(2*pi/5*time2);
sig2_ts = timeseries(sig2vals,time2);
sig2_ts.Name = 'Wave Data';

테스트 케이스 만들기 및 신호 비교하기

이 예제에서는 설명을 돕고자 대화형 방식 테스트를 사용합니다. MATLAB 테스트 프레임워크에서 다른 유형의 단위 테스트와 함께 MatchesSignal 제약 조건을 사용할 수 있습니다. 예를 들어, 클래스 기반 단위 테스트를 작성하려면 클래스를 사용하여 간단한 테스트 케이스 작성하기 항목을 참조하십시오.

대화형 방식 사용을 위해 TestCase 인스턴스를 만듭니다.

import matlab.unittest.TestCase

testCase = TestCase.forInteractiveUse;

MatchesSignal 제약 조건을 사용하여 sig1_tssig2_ts를 비교합니다. MatchesSignal 제약 조건의 인스턴스에서 예상 값으로 sig1_ts를 사용합니다.

import Simulink.sdi.constraints.MatchesSignal

testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts));
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    MatchesSignal(<Value>) failed.
    --> The following aligned signals did not match:
        
              Name       ActualSignals    ExpectedSignals
            _________    _____________    _______________
                                                         
            Wave Data    <Actual>.Data    <Expected>.Data
    
    Comparison results have been saved to:
    --> /tmp/Bdoc24a_2511836_2299885/comparisonResults_76918780-d97e-4319-9d23-4e569d737a0c.mldatx
    ------------------
    Stack Information:
    ------------------
    In /tmp/Bdoc24a_2511836_2299885/tp380791dc/simulink-ex22803619/TestTimeSeriesDataWithTimeToleranceExample.mlx (TestTimeSeriesDataWithTimeToleranceExample) at 14
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/evaluateRegions.p (evaluateRegions) at 0
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 0
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/codetools/+matlab/+internal/+liveeditor/@LiveEditorUtilities/execute.m (execute) at 85
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRun) at 431
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRunConvert) at 346
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (liveCodeToDocbook) at 164
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/build_using_matlab/BML.m (BML) at 13

진단 정보에 검증이 실패했다고 표시됩니다. 테스트가 실패하면 비교 결과와 원본 실행 데이터가 시뮬레이션 데이터 인스펙터 세션 파일에 저장됩니다. MLDATX 파일 링크를 클릭하여 시뮬레이션 데이터 인스펙터에서 세션을 엽니다. 여기서 테스트로 비교한 데이터와 비교 결과를 조사할 수 있습니다. 결과를 살펴보면 감쇠로 인해 차이가 발생하고 비교가 실패하는 것을 볼 수 있습니다.

비교에 사용할 MatchesSignal 제약 조건의 인스턴스에 대해 절대 허용오차를 0.02로 지정합니다.

testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02));
Verification passed.

이 예제에서는 Simulink.sdi.constraints.MatchesSignalOptions 객체를 사용하여 Simulink.sdi.constraints.MatchesSignal 제약 조건의 비교 동작을 구성하는 방법을 보여줍니다. MatchesSignalOptions 객체를 사용하여 MatchesSignal 인스턴스를 생성할 때 단일 이름-값 쌍 입력으로 여러 비교 속성을 구성할 수 있습니다.

시계열 데이터 만들기

이 예제에서는 설명을 도울 목적으로만 사용할 작업 공간 데이터를 만듭니다. MatchesSignal 제약 조건을 사용하여 시뮬레이션 출력값 또는 테스트 데이터가 포함된 파일과 같은 다른 소스에서 온 데이터를 비교할 수 있으며, 제약 조건은 시뮬레이션 데이터 인스펙터에서 지원하는 모든 형식의 시계열 데이터를 비교할 수 있습니다.

이 예제에서, 첫 번째 신호는 사인파에 대한 데이터를 포함하며 이름이 Wave Datatimeseries 객체입니다.

time = 0:0.1:20;
sig1vals = sin(2*pi/5*time);
sig1_ts = timeseries(sig1vals,time);
sig1_ts.Name = 'Wave Data';

두 번째 신호도 동일한 주파수의 사인파이며, 약간의 감쇠가 있고 다른 레이트로 샘플링됩니다. MatchesSignal 제약 조건에 대한 비교 알고리즘에는 동기화 단계가 포함되어 있으므로 서로 다른 시간 벡터를 갖는 이 두 신호를 비교해도 반드시 테스트 실패가 발생하는 것은 아닙니다. 두 번째 신호는 single 데이터형으로 형변환되고 또한 정렬 알고리즘이 비교를 위해 신호를 짝지을 수 있도록 Wave Data로 이름이 지정됩니다.

time2 = 0:0.1:22;
sig2vals = single(0.98*sin(2*pi/5*time2));
sig2_ts = timeseries(sig2vals,time2);
sig2_ts.Name = 'Wave Data';

MatchesSignal 인스턴스 구성하기 및 데이터 비교하기

MatchesSignalOptions 객체를 사용하여 MatchesSignal 제약 조건의 인스턴스가 일치하지 않는 데이터형과 같은 조건을 처리하는 방법과 실제 데이터 세트와 예상 데이터 세트 간에 신호가 정렬되는 방법을 지정할 수 있습니다. 작성하려는 테스트에 맞게 MatchesSignalOptions 객체의 속성을 지정할 수 있습니다. 예를 들어, 테스트에서 다양한 유형의 데이터를 비교하고 데이터형 일치가 기능적으로 관련이 없는 경우 IgnoreDataTypes 속성을 true로 설정할 수 있습니다.

MatchesSignalOptions 객체를 만들어 실제 신호와 예상 신호가 공유하는 시간 구간을 벗어난 데이터형 불일치 및 데이터 샘플을 무시하는 MatchesSignal 인스턴스를 만듭니다.

import Simulink.sdi.constraints.MatchesSignalOptions
opts = MatchesSignalOptions('IgnoringDataTypes',true,'IgnoringExtraData',true);

대화형 방식 사용을 위한 TestCase 인스턴스를 만들고 MatchesSignal 제약 조건, MatchesSignalOptions 객체 및 0.02의 절대 허용오차를 사용하여 sig1_tssig2_ts를 비교합니다.

import matlab.unittest.TestCase
testCase = TestCase.forInteractiveUse;

import Simulink.sdi.constraints.MatchesSignal
testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02,'WithOptions',opts))
Verification passed.

테스트가 통과합니다. MatchesSignalOptions 객체로 정의된 옵션 없이 동일한 테스트를 다시 실행하면 데이터형 불일치로 인해 테스트가 실패합니다.

testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02))
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    MatchesSignal(<Value>,'AbsTol',0.02) failed.
    --> Data types do not match for the following aligned signals:
        
              Name       ActualSignals    ActualDataType    ExpectedSignals    ExpectedDataType
            _________    _____________    ______________    _______________    ________________
                                                                                               
            Wave Data    <Actual>.Data        single        <Expected>.Data         double     
    
    ------------------
    Stack Information:
    ------------------
    In /tmp/Bdoc24a_2511836_2316910/tp8cb43bfc/simulink-ex71177165/ConfigureMatchesSignalConstraintBehaviorExample.mlx (ConfigureMatchesSignalConstraintBehaviorExample) at 16
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/evaluateRegions.p (evaluateRegions) at 0
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 0
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/codetools/+matlab/+internal/+liveeditor/@LiveEditorUtilities/execute.m (execute) at 85
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRun) at 431
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRunConvert) at 346
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (liveCodeToDocbook) at 164
    In /mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/tools/build_using_matlab/BML.m (BML) at 13

버전 내역

R2019a에 개발됨

모두 확장