동작 언어 구문으로서 MATLAB과 C의 차이점
Simulink® 모델의 Stateflow® 차트에는 상태 동작과 천이 동작의 구문을 정의하는 동작 언어 속성이 있습니다. 차트 캔버스의 왼쪽 아래 코너에 있는 아이콘은 차트의 동작 언어를 나타냅니다.
MATLAB®을 동작 언어로 사용합니다.
C를 동작 언어로 사용합니다.
MATLAB은 새로운 Stateflow 차트에 대한 디폴트 동작 언어 구문입니다. C를 동작 언어로 사용하는 차트를 만들려면 다음을 입력하십시오.
sfnew -c
동작 언어의 기능 비교하기
다음 표에는 두 동작 언어 간의 가장 중요한 기능 차이점이 나열되어 있습니다.
기능 | MATLAB을 동작 언어로 사용 | C를 동작 언어로 사용 |
---|---|---|
벡터와 행렬 인덱싱 | 소괄호와 쉼표로 구분된 1부터 시작하는 인덱싱. 예를 들면, | 대괄호로 구분된 0부터 시작하는 인덱싱. 예를 들면, |
C 구문:
| MATLAB 구문으로 자동 수정. 예를 들어, | 지원됨. Stateflow 데이터에 대한 연산 항목을 참조하십시오. |
상태 동작의 조건부 제어문 및 루프 제어문 | 지원됨. 예를 들어, 상태 동작에서 | 지원되지 않음. 조건부 패턴과 루프 패턴의 경우 그래픽 함수를 대신 사용하십시오. 그래픽 함수를 정의하여 논리 패턴 재사용하기 항목을 참조하십시오. |
천이 동작의 형식 | 자동 수정은 천이 동작을 중괄호 | 천이 동작을 중괄호 |
가변 크기 데이터 | 상태 동작과 천이 동작에 있는 가변 크기 차트 데이터를 수정합니다. 자세한 내용은 MATLAB을 동작 언어로 사용하는 차트의 가변 크기 데이터 항목을 참조하십시오. | 다음을 사용하여 가변 크기 차트 데이터를 수정합니다.
가변 크기 데이터가 포함된 모든 계산은 이러한 함수의 내부에서 수행되어야 하며, 상태나 천이에서 직접 수행되지 않아야 합니다. 자세한 내용은 C를 동작 언어로 사용하는 차트의 가변 크기 데이터 항목을 참조하십시오. |
고정소수점 구문:
| 지원되지 않음. | 지원됨. Override Fixed-Point Promotion in C Charts 항목과 Fixed-Point Context-Sensitive Constants 항목을 참조하십시오. |
복소수 데이터 | 복소수 표기법 |
|
데이터형 전파 | MATLAB 유형 지정 규칙을 따릅니다. 예를 들어, | C 유형 지정 규칙을 따릅니다. 예를 들어, |
명시적 형변환 연산 | 다음 형변환 중 하나를 사용합니다.
| 다음 형변환 중 하나를 사용합니다.
|
스칼라 확장 | 지원되지 않음. | 지원됨. 값을 행렬의 모든 요소에 대입하기 항목을 참조하십시오. |
문자열 데이터 | 큰따옴표( | 큰따옴표(" ..." ) 또는 작은따옴표(' ...' )를 구분자로 사용합니다. Manage Textual Information by Using Strings 항목을 참조하십시오. |
데이터 속성의 사양:
| 지원되지 않음. | 지원됨. 자세한 내용은 다음을 참조하십시오.
|
그래픽 함수, 진리표 함수, MATLAB 함수의 데이터 범위 | Constant , Parameter , Input , Output | Local , Constant , Parameter , Input , Output , Temporary |
점 표기법을 사용하여 MATLAB 함수 내에 상태, 로컬 데이터, 메시지, 로컬 이벤트 지정 | 지원됨. Identify Data by Using Dot Notation 항목을 참조하십시오. | 지원되지 않음. |
사용자 지정 코드 함수 및 변수 | 동작은 사용자 지정 코드 가져오기 구성 파라미터에 따라 다릅니다.
Reuse Custom Code in Stateflow Charts 항목과 Import custom code (Simulink) 항목을 참조하십시오. | 사용자 지정 코드 함수와 변수는 상태와 천이에서 지원됩니다. |
구조체 파라미터 | 조정 가능형 파라미터와 조정 불가형 파라미터가 지원됩니다. | 조정 가능형 파라미터만 지원됩니다. |
전역 | 지원됨. | 지원되지 않음. |
MATLAB을 동작 언어 사용하는 경우의 지침
벡터와 행렬에 1부터 시작하는 인덱싱 사용하기
1부터 시작하는 인덱싱은 MATLAB 구문과 일치합니다. 자세한 내용은 인덱싱 표기법 항목을 참조하십시오.
대괄호가 아닌 소괄호를 사용하여 벡터와 행렬 인덱싱하기
다음 문은 유효합니다.
a(2,5) = 0;
다음 문은 유효하지 않습니다.
a[2][5] = 0;
자세한 내용은 인덱싱 표기법 항목을 참조하십시오.
주석에 MATLAB 형식 사용하기
MATLAB과의 일관성을 위해 %
를 사용하여 상태와 천이에 주석을 지정하십시오. 예를 들어, 다음 주석은 유효합니다.
% This is a valid comment in the style of MATLAB
C 스타일의 주석(예: //
및 /* */
)은 %를 사용하도록 자동 수정됩니다.
천이 동작을 중괄호로 묶기
다음 천이 레이블에는 유효한 천이 동작이 포함되어 있습니다.
E [x > 0] / {x = x+1;}
다음 천이 레이블은 올바르지 않지만, 유효한 구문으로 자동 수정됩니다.
E [x > 0] / x = x+1;
조건 동작 및 천이 동작에 제어 흐름 논리를 사용하지 않음
제어 흐름 논리(예: if
문, switch
문, for
문, while
문)는 상태 동작에서만 지원됩니다. 조건 동작 또는 천이 동작에서 제어 흐름 논리를 사용하면 구문 오류가 발생합니다.
상태 동작에 전역 변수 또는 영속 변수를 선언하지 않음
키워드 global
및 persistent
는 상태 동작에서 지원되지 않습니다.
로컬 데이터와 출력 데이터에 초기값 할당하기
MATLAB을 동작 언어로 사용하는 경우 초기값이 없는 데이터를 읽으면 오류가 발생합니다.
열거형 값의 식별자에 대한 유형 접두사 포함하기
식별자 TrafficColors.Red
는 유효하지만, Red
는 유효하지 않습니다.
모델에서 코드를 생성하려면 코드 생성에 지원되는 MATLAB 언어 특징 사용하기
그 밖의 경우에는 coder.extrinsic
을 사용하여 지원되지 않는 함수를 호출하면 생성된 코드에는 없는 시뮬레이션에 필요한 기능을 제공합니다. 지원되는 특징과 함수의 목록은 언어, 함수 및 객체 지원 (Simulink) 항목을 참조하십시오.