주요 콘텐츠

동작 언어 구문으로서 MATLAB과 C의 차이점

Simulink® 모델의 Stateflow® 차트에는 상태 동작과 천이 동작의 구문을 정의하는 동작 언어 속성이 있습니다. 차트 캔버스의 왼쪽 아래 코너에 있는 아이콘은 차트의 동작 언어를 나타냅니다.

  • MATLAB®을 동작 언어로 사용합니다.

  • C를 동작 언어로 사용합니다.

MATLAB은 새로운 Stateflow 차트에 대한 디폴트 동작 언어 구문입니다. C를 동작 언어로 사용하는 차트를 만들려면 다음을 입력하십시오.

sfnew -c

동작 언어의 기능 비교하기

다음 표에는 두 동작 언어 간의 가장 중요한 기능 차이점이 나열되어 있습니다.

기능MATLAB을 동작 언어로 사용C를 동작 언어로 사용

벡터와 행렬 인덱싱

소괄호와 쉼표로 구분된 1부터 시작하는 인덱싱. 예를 들면, A(4,5)와 같습니다. Stateflow에서의 벡터와 행렬에 대한 연산 항목을 참조하십시오.

대괄호로 구분된 0부터 시작하는 인덱싱. 예를 들면, A[3][4]와 같습니다. Stateflow에서의 벡터와 행렬에 대한 연산 항목을 참조하십시오.

C 구문:

  • 증가 연산과 감소 연산 a++a--

  • 대입 연산 a += b, a –= b, a *= b, a /= b

  • 평가 연산 a != b!a

  • 이항 연산 a %% b, a >> b, a << b, a & b, a | b

  • 주석 마커 ///* */

MATLAB 구문으로 자동 수정. 예를 들어, a++a = a+1로 수정됩니다. MATLAB을 동작 언어로 사용하는 경우의 자동 수정 항목을 참조하십시오.

지원됨. Stateflow 데이터에 대한 연산 항목을 참조하십시오.

상태 동작의 조건부 제어문 및 루프 제어문

지원됨. 예를 들어, 상태 동작에서 if 문, for 문, while 문을 사용할 수 있습니다. 루프와 조건문 항목을 참조하십시오.

지원되지 않음. 조건부 패턴과 루프 패턴의 경우 그래픽 함수를 대신 사용하십시오. 그래픽 함수를 정의하여 논리 패턴 재사용하기 항목을 참조하십시오.

천이 동작의 형식

자동 수정은 천이 동작을 중괄호 {}로 묶습니다. 천이 동작 항목을 참조하십시오.

천이 동작을 중괄호 {}로 묶을 필요가 없습니다. 천이 동작 항목을 참조하십시오.

가변 크기 데이터

상태 동작과 천이 동작에 있는 가변 크기 차트 데이터를 수정합니다. 자세한 내용은 MATLAB을 동작 언어로 사용하는 차트의 가변 크기 데이터 항목을 참조하십시오.

다음을 사용하여 가변 크기 차트 데이터를 수정합니다.

  • MATLAB 함수

  • Simulink 함수

  • MATLAB을 동작 언어로 사용하는 진리표

가변 크기 데이터가 포함된 모든 계산은 이러한 함수의 내부에서 수행되어야 하며, 상태나 천이에서 직접 수행되지 않아야 합니다. 자세한 내용은 C를 동작 언어로 사용하는 차트의 가변 크기 데이터 항목을 참조하십시오.

고정소수점 구문:

  • 특수 대입 연산자 :=

  • 컨텍스트 의존 상수, 예: 4.3C

지원되지 않음.

지원됨. Override Fixed-Point Promotion in C Charts 항목과 Fixed-Point Context-Sensitive Constants 항목을 참조하십시오.

복소수 데이터

복소수 표기법 a + bi 또는 complex 연산자를 사용합니다. Operations for Complex Data in Stateflow 항목을 참조하십시오.

complex 연산자를 사용하십시오. 복소수 표기법은 지원되지 않습니다. Operations for Complex Data in Stateflow 항목을 참조하십시오.

데이터형 전파

MATLAB 유형 지정 규칙을 따릅니다. 예를 들어, double형 데이터를 int32형 데이터에 추가하면 int32형 데이터가 됩니다.

C 유형 지정 규칙을 따릅니다. 예를 들어, double형 데이터를 int32형 데이터에 추가하면 double형 데이터가 됩니다.

명시적 형변환 연산

다음 형변환 중 하나를 사용합니다.

  • MATLAB 유형 변환 함수. 예를 들면, single(x)입니다.

  • 형식 키워드를 갖는 cast 함수. 예를 들면, cast(x,"int8")입니다.

  • "like" 키워드를 갖는 cast 함수. 예를 들면, cast(x,"like",z)입니다.

type 연산자는 지원되지 않습니다. 형변환 연산 항목을 참조하십시오.

다음 형변환 중 하나를 사용합니다.

  • MATLAB 유형 변환 함수. 예를 들면, uint16(x)와 같습니다.

  • type 연산자를 갖는 cast 함수. 예를 들면, cast(x,type(z))입니다.

cast 함수의 형식 키워드는 지원되지 않습니다. 형변환 연산 항목을 참조하십시오.

스칼라 확장

지원되지 않음.

지원됨. 값을 행렬의 모든 요소에 대입하기 항목을 참조하십시오.
문자열 데이터

큰따옴표("...")를 구분자로 사용합니다. Manage Textual Information by Using Strings 항목을 참조하십시오.

큰따옴표("...") 또는 작은따옴표('...')를 구분자로 사용합니다. Manage Textual Information by Using Strings 항목을 참조하십시오.

데이터 속성의 사양:

  • 첫 번째 인덱스

  • 기본 작업 공간에 최종 값 저장

  • 단위

지원되지 않음.

지원됨. 자세한 내용은 다음을 참조하십시오.

그래픽 함수, 진리표 함수, MATLAB 함수의 데이터 범위

Constant, Parameter, Input, OutputLocal, Constant, Parameter, Input, Output, Temporary

점 표기법을 사용하여 MATLAB 함수 내에 상태, 로컬 데이터, 메시지, 로컬 이벤트 지정

지원됨. Identify Data by Using Dot Notation 항목을 참조하십시오.

지원되지 않음.

사용자 지정 코드 함수 및 변수

동작은 사용자 지정 코드 가져오기 구성 파라미터에 따라 다릅니다.

  • 사용자 지정 코드 가져오기를 활성화하면 상태와 천이(디폴트 값)에서 사용자 지정 코드 함수와 변수가 모두 지원됩니다.

  • 사용자 지정 코드 가져오기를 비활성화하면 사용자 지정 코드 함수만 지원됩니다. coder.ceval (MATLAB Coder) 함수를 사용하십시오.

Reuse Custom Code in Stateflow Charts 항목과 Import custom code (Simulink) 항목을 참조하십시오.

사용자 지정 코드 함수와 변수는 상태와 천이에서 지원됩니다.

구조체 파라미터

조정 가능형 파라미터와 조정 불가형 파라미터가 지원됩니다.

조정 가능형 파라미터만 지원됩니다.

전역 fimath 객체 사용

지원됨.

지원되지 않음.

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 문)는 상태 동작에서만 지원됩니다. 조건 동작 또는 천이 동작에서 제어 흐름 논리를 사용하면 구문 오류가 발생합니다.

상태 동작에 전역 변수 또는 영속 변수를 선언하지 않음

키워드 globalpersistent는 상태 동작에서 지원되지 않습니다.

로컬 데이터와 출력 데이터에 초기값 할당하기

MATLAB을 동작 언어로 사용하는 경우 초기값이 없는 데이터를 읽으면 오류가 발생합니다.

열거형 값의 식별자에 대한 유형 접두사 포함하기

식별자 TrafficColors.Red는 유효하지만, Red는 유효하지 않습니다.

모델에서 코드를 생성하려면 코드 생성에 지원되는 MATLAB 언어 특징 사용하기

그 밖의 경우에는 coder.extrinsic을 사용하여 지원되지 않는 함수를 호출하면 생성된 코드에는 없는 시뮬레이션에 필요한 기능을 제공합니다. 지원되는 특징과 함수의 목록은 언어, 함수 및 객체 지원 (Simulink) 항목을 참조하십시오.

참고 항목

도움말 항목