동작 언어 구문으로서 MATLAB과 C의 차이점
Simulink® 모델의 Stateflow® 차트에는 상태 동작과 천이 동작의 구문을 정의하는 동작 언어 속성이 있습니다. 차트 캔버스의 왼쪽 아래 코너에 있는 아이콘은 다음과 같이 차트의 동작 언어를 나타냅니다.
MATLAB®이 동작 언어입니다.
C가 동작 언어입니다.
선택한 동작 언어는 상태 및 천이 동작을 작성하는 방식, 사용 가능한 연산, 차트가 코드를 생성하는 방식에 영향을 미칩니다.
MATLAB은 새로운 Stateflow 차트에 대한 디폴트 동작 언어 구문입니다. C를 동작 언어로 사용하는 차트를 만들려면 다음을 입력하십시오.
sfnew -c동작 언어 선택하기
다음과 같은 작업에는 MATLAB을 동작 언어로 사용하십시오.
알고리즘과 논리를 빠르게 반복해야 하는 프로토타이핑 및 신속한 개발.
차트가 배열과 복잡한 수학 연산을 광범위하게 사용하는 행렬 및 벡터 연산.
기존 MATLAB 함수 및 툴박스를 활용하려는 MATLAB 통합.
다음과 같은 작업에는 C를 동작 언어로 사용하십시오.
실시간 시스템에서 최대 실행 속도가 필요한, 성능이 중요한 애플리케이션.
리소스가 제한된 하드웨어를 위한 임베디드 타깃 및 코드 생성.
예측 가능한 타이밍과 메모리 사용량이 필요한, 결정적 동작을 포함하는 애플리케이션.
동작 언어 간 차이점
MATLAB 동작 언어와 C 동작 언어는 구문, 지원되는 연산, 코드 생성 동작에서 차이가 있습니다. 다음 표에는 두 동작 언어 간의 가장 중요한 차이점이 나열되어 있습니다.
기본 연산
| 기능 | MATLAB을 동작 언어로 사용 | C를 동작 언어로 사용 |
|---|---|---|
증가 연산과 감소 연산 | 차트가 구문을 자동으로 MATLAB 구문으로 수정합니다. 예를 들어, | 차트가 |
대입 연산 | 차트가 구문을 자동으로 MATLAB 구문으로 수정합니다. 예를 들어, | 차트가 a += b, a –= b, a *= b, a /= b를 지원합니다. Stateflow 데이터에 대한 연산 항목을 참조하십시오. |
비교 연산 | a ~= b | 차트가 a != b 및 !a 연산을 지원합니다. Stateflow 데이터에 대한 연산 항목을 참조하십시오. |
주석 마커 | %로 자동 수정. | 차트가 // 및 /* */를 지원합니다. Stateflow 데이터에 대한 연산 항목을 참조하십시오. |
| 조건문 | 상태 동작에서 | 상태 동작에서만 지원됩니다. |
| 루프 문 | 상태 동작에서 | 루프 문은 지원되지 않습니다. 조건부 패턴과 루프 패턴의 경우 그래픽 함수를 대신 사용하십시오. 그래픽 함수를 정의하여 논리 패턴 재사용하기 항목을 참조하십시오. |
인덱싱 및 데이터 처리
| 기능 | MATLAB을 동작 언어로 사용 | C를 동작 언어로 사용 |
|---|---|---|
벡터와 행렬 인덱싱 | 1부터 시작하는 인덱싱. 예: | 0부터 시작하는 인덱싱. 예: |
인덱스 구분자 | 쉼표가 포함된 괄호. 예: | 대괄호. 예: |
가변 크기 데이터 | 상태 동작과 천이 동작에서 가변 크기 차트 데이터를 수정할 수 있습니다. 자세한 내용은 MATLAB을 동작 언어로 사용하는 차트의 가변 크기 데이터 항목을 참조하십시오. | 다음을 사용하여 가변 크기 차트 데이터를 수정할 수 있습니다.
가변 크기 데이터를 포함하는 모든 계산은 이러한 함수의 내부에서 수행되어야 하며, 상태나 천이에서 직접 수행되지 않아야 합니다. 자세한 내용은 C를 동작 언어로 사용하는 차트의 가변 크기 데이터 항목을 참조하십시오. |
| 스칼라 확장 | 지원되지 않음. | 지원됨. 값을 모든 요소에 대입하기 항목을 참조하십시오. |
| 문자열 구분자 | 큰따옴표( | 큰따옴표("...") 또는 작은따옴표('...')를 구분자로 사용합니다. Manage Textual Information by Using Strings 항목을 참조하십시오. |
복소수 데이터 | 복소수 표기법 |
|
데이터형 전파 | MATLAB 유형 지정 규칙을 따릅니다. 예를 들어, | C 유형 지정 규칙을 따릅니다. 예를 들어, |
고급 기능 및 코드 생성
| 기능 | MATLAB을 동작 언어로 사용 | C를 동작 언어로 사용 |
|---|---|---|
고정소수점 구문:
| 지원되지 않음. | 지원됨. Override Fixed-Point Promotion in C Charts 항목과 Fixed-Point Context-Sensitive Constants 항목을 참조하십시오. |
명시적 형변환 연산 | MATLAB 유형 변환 함수 또는 | MATLAB 유형 변환 함수 또는 |
점 표기법을 사용하여 MATLAB 함수 내에 상태, 로컬 데이터, 메시지, 로컬 이벤트 지정 | 지원됨. Identify Data by Using Dot Notation 항목을 참조하십시오. | 지원되지 않음. |
구조체 파라미터 | 조정 가능형 파라미터와 조정 불가형 파라미터가 지원됩니다. | 조정 가능형 파라미터만 지원됩니다. |
전역 | 지원됨. | 지원되지 않음. |
복소수 데이터 | 복소수 표기법 |
|
MATLAB을 동작 언어로 사용하는 경우의 자동 수정
MATLAB을 동작 언어로 사용하는 Stateflow 차트는 다음 C 구문을 MATLAB 구문으로 자동 수정합니다.
a++및a--같은 증가 연산 및 감소 연산. 예를 들어,a++는a = a+1로 변경됩니다.a += b,a –= b,a *= b,a /= b같은 대입 연산. 예를 들어,a += b는a = a+b로 변경됩니다.a != b및!a같은 평가 연산. 예를 들어,a != b는a ~= b로 변경됩니다.주석 마커
//및/* */는%로 변경됩니다.
이 기본 설정을 비활성화하려면 sfpref 함수를 사용하십시오.
sfpref(EnableLabelAutoCorrectionForMAL=false);
MATLAB을 동작 언어로 사용하는 경우의 지침
MATLAB을 동작 언어로 사용하는 차트에서 코딩할 때는 다음 지침을 따르십시오.
벡터와 행렬에 1부터 시작하는 인덱싱 사용하기
1부터 시작하는 인덱싱은 MATLAB 구문과 일치합니다. 자세한 내용은 인덱싱 표기법 항목을 참조하십시오.
대괄호가 아닌 소괄호를 사용하여 벡터와 행렬 인덱싱하기
다음 문은 유효합니다.
a(2,5) = 0;
다음 문은 유효하지 않습니다.
a[2][5] = 0;
자세한 내용은 인덱싱 표기법 항목을 참조하십시오.
주석에 MATLAB 형식 사용하기
MATLAB과의 일관성을 위해 %를 사용하여 상태와 천이에 주석을 지정하십시오. 예를 들어, 다음 주석은 유효합니다.
% This is a valid comment in the style of MATLABC 스타일의 주석(예: // 및 /* */)은 %를 사용하도록 자동 수정됩니다.
천이 동작을 중괄호로 묶기
다음 천이 레이블에는 유효한 천이 동작이 포함되어 있습니다.
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) 항목을 참조하십시오.