Main Content

hasChanged

Stateflow 차트에서 마지막 시간 스텝 이후 데이터의 변경 감지

설명

예제

tf = hasChanged(data)는 현재 시간 스텝 시작 부분의 data 값이 차트가 웨이크업 상태가 된 마지막 시간 스텝 시작 부분의 data 값과 다른 경우 1(true)을 반환합니다. 그렇지 않으면 연산자는 0(false)을 반환합니다.

예제

모두 확장

마지막 시간 스텝 또는 입력 이벤트 이후 행렬 M의 요소 값이 변경된 경우 상태에서 천이됩니다.

[hasChanged(M)]

Stateflow chart that uses the hasChanged operator in a transition.

마지막 시간 스텝 또는 입력 이벤트 이후 행렬 M의 1행, 3열에 있는 요소 값이 변경된 경우 상태에서 천이됩니다.

MATLAB®을 동작 언어로 사용하는 차트에서는 다음을 사용하십시오.

[hasChanged(M(1,3))]

Stateflow chart that uses the hasChanged operator in a transition.

C를 동작 언어로 사용하는 차트에서는 다음을 사용하십시오.

[hasChanged(M[0][2])]

Stateflow chart that uses the hasChanged operator in a transition.

마지막 시간 스텝 또는 입력 이벤트 이후 구조체 struct의 필드 값이 변경된 경우 상태에서 천이됩니다.

[hasChanged(struct)]

Stateflow chart that uses the hasChanged operator in a transition.

마지막 시간 스텝 또는 입력 이벤트 이후 필드 struct.field의 값이 변경된 경우 상태에서 천이됩니다.

[hasChanged(struct.field)]

Stateflow chart that uses the hasChanged operator in a transition.

입력 인수

모두 확장

Stateflow® 데이터로, 다음으로 지정됩니다.

  • 스칼라

  • 행렬 또는 행렬의 요소

  • 구조체 또는 구조체의 필드

  • 구조체 필드 또는 행렬 요소의 유효한 조합

data가 행렬인 경우 연산자는 data의 요소 중 하나에서 변경을 감지하면 true를 반환합니다. 정수로 평가되는 숫자나 표현식을 사용하여 행렬의 요소를 인덱싱할 수도 있습니다. Stateflow에서의 벡터와 행렬에 대한 연산 항목을 참조하십시오.

data가 구조체인 경우 연산자는 data의 필드 중 하나에서 변경을 감지하면 true를 반환합니다. 점 표기법을 사용하여 구조체의 필드를 인덱싱할 수도 있습니다. Index and Assign Values to Stateflow Structures 항목을 참조하십시오.

인수 data는 자명하지 않은 표현식이나 사용자 지정 코드 변수가 될 수 없습니다.

MATLAB의 독립 실행형 차트에서는 행렬의 요소나 구조체의 필드에 대한 변경 감지를 지원하지 않습니다.

제한 사항

  • Stateflow 진리표 내에서는 사용할 수 없습니다.

  • 동일한 시간 스텝에서 여러 입력 이벤트가 발생하는 경우 hasChanged 연산자는 입력 이벤트 사이의 데이터 값 변경을 감지할 수 있습니다.

  • 차트가 데이터 객체에 쓰지만 데이터 값을 변경하지 않는 경우 hasChanged 연산자는 false를 반환합니다.

  • Stateflow 차트의 유형에 따라 변경 감지 연산자에서 지원하는 데이터 범위가 결정됩니다.

    • MATLAB의 독립 실행형 Stateflow 차트: 로컬

    • Simulink® 모델에서 MATLAB을 동작 언어로 사용하는 차트: 입력

    • Simulink 모델에서 C를 동작 언어로 사용하는 차트: 입력, 출력, 로컬 또는 데이터 저장소 메모리

  • MATLAB의 독립 실행형 차트에서 변경 감지 연산자는 step 함수 호출에 지정된 데이터의 변경을 감지할 수 있는데, 그 이유는 이러한 변경이 현재 시간 스텝의 시작 전에 발생하기 때문입니다. 예를 들어 x가 0인 경우 다음 명령으로 차트 ch를 실행하면 표현식 hasChanged(x)true를 반환합니다.

    step(ch,x=1);
    이와 반대로 변경 감지 연산자는 동일한 시간 스텝에서 상태 동작 또는 천이 동작에서 대입으로 인해 발생하는 데이터의 변경을 감지할 수 없습니다. 대신 연산자는 다음 시간 스텝 시작 시 값의 변경을 감지합니다.

  • Simulink 모델의 차트에서 차트 옵션 차트가 웨이크업 상태가 될 때마다 출력 초기화를 활성화한 경우 hasChanged 연산자의 인수로 출력을 사용하면 항상 false가 반환됩니다. 자세한 내용은 Initialize outputs every time chart wakes up 항목을 참조하십시오.

  • hasChanged를 사용하는 차트에서 행 우선 배열 레이아웃이 활성화되어 있으면 코드 생성 시 오류가 발생합니다. hasChanged를 사용하는 차트에서 코드를 생성하기 전에 열 우선 배열 레이아웃을 활성화하십시오. Select Array Layout for Matrices in Generated Code 항목을 참조하십시오.

버전 내역

R2007a에 개발됨