주요 콘텐츠

hasChangedFrom

Stateflow 차트에서 데이터가 지정된 값에서 변경되었는지 감지

설명

data 값이 이전 시간 스텝 시작 시의 value와 같고 현재 시간 스텝 시작 시의 값과 다른 경우 tf = hasChangedFrom(data,value)1(true)을 반환합니다. 그렇지 않으면 연산자는 0(false)을 반환합니다.

예제

예제

모두 확장

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

[hasChangedFrom(M,matrixValue)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

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

[hasChangedFrom(M(1,3),7)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

[hasChangedFrom(M[0][2],7)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

[hasChangedFrom(struct,structValue)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

[hasChangedFrom(struct.field,5)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

입력 인수

모두 확장

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

  • 스칼라

  • 행렬 또는 행렬의 요소

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

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

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

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

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

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

이전 시간 스텝의 데이터 값으로, data와 동일한 데이터형으로 지정됩니다. valuedata와 비교 가능한 값으로 평가되는 표현식이어야 합니다.

  • data가 스칼라인 경우 value는 스칼라로 연결이 맺어져야 합니다.

  • data가 행렬인 경우 valuedata와 차원이 동일한 행렬로 연결이 맺어져야 합니다.

    또는 C를 동작 언어로 사용하는 차트에서 value는 스칼라 값으로 연결이 맺어질 수 있습니다. 차트는 스칼라 확장을 사용하여 datavalue에 의해 지정되는 값과 모든 요소가 동일한 행렬과 비교합니다. 값을 행렬의 모든 요소에 대입하기 항목을 참조하십시오.

  • data가 구조체인 경우 value는 필드 사양이 data와 정확하게 일치하는 구조체로 연결이 맺어져야 합니다.

제한 사항

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

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

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

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

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

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

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

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

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

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

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

버전 내역

R2007a에 개발됨