Main Content

MATLAB Function 블록의 구조체 만들기

MATLAB Function 블록에서 입력, 출력, 지역, 영속 또는 파라미터 변수에 대한 구조체를 만들어 사용할 수 있습니다. MATLAB Function 블록의 구조체에는 다중화 신호, 버스, 구조체 배열을 포함하여 모든 유형과 크기의 필드가 포함될 수 있습니다.

구조체를 생성하기 전에 MATLAB Function 변수의 범위를 결정해야 합니다. Create and Define MATLAB Function Block Variables 항목을 참조하십시오.

입력 변수

입력 변수에 대한 구조체 생성 시 MATLAB Function 블록에 따라 입력 신호에서 오는 구조체의 유형, 크기 및 실수/복소수 여부가 결정됩니다. 입력 변수에 대한 구조체를 정의하려면 다음을 수행하십시오.

  1. 기본 작업 공간에 구조체를 정의하는 Simulink.Bus 객체를 만듭니다.

  2. 입력 변수를 식별하거나 MATLAB Function 블록에 추가합니다. 입력 변수는 범위 속성이 입력으로 설정되어 있습니다.

  3. 변수 유형 속성을 상속: Simulink와 동일 또는 Bus: <object name>으로 설정합니다. <object name>의 경우, 구조체 속성을 정의하는 Simulink.Bus 객체의 이름을 입력합니다.

Simulink® 모델의 버스는 MATLAB Function 블록 내에서 구조체로 나타납니다.

출력 변수

출력 변수에 대한 구조체를 생성할 때는 Simulink.Bus 객체를 생성한 다음 MATLAB® 함수 코드에서 변수의 유형, 크기, 실수/복소수 여부를 정의합니다. 코드의 속성과 객체의 속성이 일치해야 합니다. 출력 변수에 대한 구조체를 정의하려면 다음을 수행하십시오.

  1. 기본 작업 공간에 Simulink.Bus 객체를 만들어 구조체를 정의합니다.

  2. 출력 변수를 식별하거나 MATLAB Function 블록에 추가합니다. 출력 변수는 범위 속성이 출력으로 설정되어 있습니다.

  3. 유형 속성을 Bus: <object name>으로 설정합니다. <object name>의 경우, 구조체를 정의하는 Simulink.Bus 객체의 이름을 입력합니다.

  4. 코드 생성을 위한 구조체 정의에 설명된 대로 출력 구조체를 MATLAB 함수에서 변수로 초기화합니다. 각 요소의 수, 유형, 크기를 포함하여 출력 변수의 구조체 구성을 Simulink.Bus 객체와 일치시킵니다.

MATLAB Function 블록의 구조체 출력은 Simulink 모델에서 버스로 나타납니다. MATLAB Function 블록은 비가상 버스 출력을 지원하지만, 가상 버스 출력은 지원하지 않습니다.

지역 변수

구조체 지역 변수를 정의하려면 코드 생성을 위한 구조체 정의에 설명된 대로 MATLAB 함수에서 구조체를 정의하십시오. 기호 창에서는 지역 변수를 정의하지 않으며 속성 인스펙터에서 속성을 수정할 수 없습니다. 기본적으로, MATLAB Function 블록은 각 시간 스텝 후에 지역 변수 값을 지웁니다.

영속 변수

구조체 영속 변수를 정의하려면 함수 코드에서 해당 변수를 영속 변수로 선언하십시오. persistentMATLAB 함수에서 영속 변수 초기화하기 항목을 참조하십시오. 예를 들어 영속 변수 myVar을 선언하려면 다음을 입력하십시오.

persistent myVar

그런 다음 MATLAB 함수에서 변수 구조체를 정의합니다. 기호 창에서는 영속 변수를 정의하지 않으며 속성 인스펙터에서 수정할 수 있는 속성도 없습니다.

파라미터 변수

구조체 파라미터 변수를 정의하려면 다음을 수행하십시오.

  1. 기본 작업 공간, 모델 작업 공간 또는 MATLAB Function 블록을 포함하는 마스크 처리된 서브시스템에서 구조체 변수를 생성합니다.

  2. 파라미터 변수를 식별하거나 MATLAB Function 블록에 추가합니다. MATLAB Function 블록 파라미터 변수 구성하기 항목을 참조하십시오. 파라미터 변수는 범위 속성이 파라미터로 설정되어 있습니다. 변수 이름을 일치시킵니다.

조정 불가형 구조체 파라미터의 fimath 속성

고정 소수점 값이 포함된 조정 불가형 구조체 파라미터의 fimath 속성은 구조체의 초기값에 의해 결정됩니다. 속성 인스펙터에 정의되는 MATLAB Function 블록의 fimath 속성은 이러한 값을 지정하지 않습니다.

전역 변수

MATLAB Function 블록에서 전역 변수를 정의하여 Simulink.Signal 객체 또는 Data Store Memory 블록의 시뮬레이션 데이터에 액세스할 수 있습니다. MATLAB Function 블록에서 전역 데이터 사용하기 항목을 참조하십시오. 구조체 전역 변수를 정의하려면 다음을 수행하십시오.

  1. 기본 작업 공간에 Simulink.Bus 객체를 만들어 구조체를 정의합니다.

  2. 전역 변수를 식별하거나 MATLAB Function 블록에 전역 변수를 추가합니다. 전역 변수는 범위 속성이 데이터 저장소 메모리로 설정되어 있습니다. 이 범위를 가진 변수는 Data Store Memory 블록 또는 Simulink.Signal 객체의 관련 데이터에서 속성을 상속합니다.

  3. 함수 코드에서 전역 변수를 선언합니다. 예를 들어 전역 변수 myVar을 선언하려면 다음을 입력하십시오.

    global myVar

예제는 Write Buses From Data Store Memory to a MATLAB Function Block 항목을 참조하십시오.

구조체와 필드에 값 할당하기

구조체를 정의한 후 구조체, 하위 구조체 또는 구조체 변수의 필드에 값을 할당할 수 있습니다. 다음 지침을 따르십시오.

연산조건
한 구조체를 다른 구조체에 할당각 구조체는 기본 작업 공간에 있는 Simulink.Bus 객체이거나 로컬에서의 묵시적 구조체 선언이어야 하며 필드 개수, 필드 유형, 필드 크기가 동일하게 정의되어야 합니다.
한 구조체를 다른 구조체의 하위 구조체에 할당구조체는 기본 작업 공간에 있는 Simulink.Bus 객체이거나 로컬에서의 구조체 선언이어야 하며 필드 개수, 필드 유형, 필드 크기가 하위 구조체와 동일하게 정의되어야 합니다.
한 구조체의 요소를 다른 구조체의 요소에 할당요소의 유형과 크기가 동일해야 합니다.

예를 들어 다음 표에서는 Read and Write Buses with a MATLAB Function Block에 설명된 모델의 사양을 기반으로 유효한 구조체 할당과 유효하지 않은 구조체 할당을 설명합니다.

할당유효한지 여부근거
outbus = mystruct;유효Simulink.Bus 객체 MainBus가 구조체 outbus를 정의하고 mystruct의 로컬 정의가 MainBus의 필드 속성과 일치합니다.
outbus = inbus;유효Simulink.Bus 객체 MainBusoutbusinbus를 모두 정의합니다.
outbus1 = inbus.ele3;유효Simulink.Bus 객체 SubBusoutbus1inbus.ele3을 모두 정의하므로 유형과 크기가 동일합니다.
outbus1 = inbus;유효하지 않음다른 Simulink.Bus 객체가 구조체 outbus1inbus를 정의합니다.

MATLAB Function 블록의 구조체에 대한 제한 사항

  • Simulink 신호, 파라미터 또는 데이터 저장소 메모리에 대해서는 셀형 배열이나 클래스를 포함하는 구조체를 사용할 수 없습니다.

  • 버스 배열에는 가변 크기 데이터를 사용할 수 없습니다. Group Nonvirtual Buses in Arrays of Buses 항목을 참조하십시오.

참고 항목

관련 항목