Main Content

Simulink.Bus.createMATLABStruct

버스와 동일한 계층 구조 및 속성을 사용하는 MATLAB 구조체 만들기

설명

예제

structs = Simulink.Bus.createMATLABStruct(buses)는 지정된 버스와 동일한 계층 구조 및 속성을 사용하는 하나 이상의 MATLAB® 구조체를 만듭니다. 결과 구조체는 버스의 접지 값을 사용합니다. 여러 버스 포트의 초기화 구조체를 만들려면 이 구문을 사용하십시오.

예제

structs = Simulink.Bus.createMATLABStruct(buses,values)는 지정된 값을 사용하는 하나 이상의 구조체를 만듭니다.

예제

structs = Simulink.Bus.createMATLABStruct(buses,values,dims)는 지정된 차원을 갖는 하나 이상의 구조체를 만듭니다. 버스 배열을 위한 구조체를 만들려면 dims 인수를 포함하십시오.

structs = Simulink.Bus.createMATLABStruct(buses,values,dims,scope)scope로 지정된 데이터 사전에 하나 이상의 구조체를 만듭니다.

예제

모두 축소

모델 ex_bus_initial_conditions를 열고 시뮬레이션합니다.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

ex_bus_initial_conditions 모델에서 불러오는 Bus 객체 Top을 사용하여 MATLAB 구조체를 만듭니다.

mStruct = Simulink.Bus.createMATLABStruct('Top');

버스 A의 버스 요소 A1에 대응하는 mStruct 구조체 필드에 값을 설정합니다.

mStruct.A.A1 = 3;
mStruct.A
ans = 

  struct with fields:

    A1: 3
    A2: [5x1 int8]

Simulink는 구조체의 다른 필드를 해당 버스 요소의 접지 값으로 설정합니다.

Unit Delay 블록의 초기 조건 구조체로 mStruct를 사용할 수 있습니다.

신호 요소로 double형이 아닌 데이터형을 사용하는 버스의 MATLAB 구조체를 만듭니다. 부분 구조체를 사용하여 일부 요소에 초기화 값을 지정합니다. 부분 구조체를 만들 때 필드의 데이터형을 해당 요소의 데이터형과 일치시킵니다.

모델 ex_bus_initial_conditions를 열고 시뮬레이션합니다.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Constant5라는 레이블이 지정된 블록이 생성하는 C1 신호 요소는 데이터형 int16형을 사용합니다.

Top 버스 신호를 생성하는 Bus Creator 블록 포트의 port 핸들을 가져옵니다.

ph = get_param('ex_bus_initial_conditions/TopBus','PortHandles');

TopBus 블록에서 만든 버스 신호의 일부 요소에 값을 지정하는 부분 구조체를 만듭니다. C.C1 필드의 값을 설정하려면 데이터형을 지정한 표현식을 사용하십시오. 표현식의 데이터형을 모델의 신호 요소의 데이터형(int16형)과 일치시킵니다.

PartialstructForK = struct('B',3,'C',struct('C1',int16(5)));

TopBus 블록의 port 핸들(ph)을 사용하여 전체 구조체를 만듭니다. C.C1B 요소의 접지 값을 재정의합니다.

outPort = ph.Outport;
mStruct = Simulink.Bus.createMATLABStruct(outPort,PartialstructForK);

출력 구조체의 C.C1 필드는 계속 데이터형 int16형을 사용합니다.

모델 ex_bus_initial_conditions를 열고 시뮬레이션합니다.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

TopBus 블록에서 만든 버스의 일부 버스 요소를 위한 부분 구조체를 만듭니다.

PartialStructForK = struct('A',struct('A1',4),'B',3)
PartialStructForK = 

  struct with fields:

    A: [1x1 struct]
    B: 3

Bus 객체 Top, 부분 구조체 및 결과로 생성되는 구조체의 차원을 사용하여 MATLAB 구조체를 만듭니다.

structFromBus = Simulink.Bus.createMATLABStruct...
     ('Top',PartialStructForK,[2 3])
structFromBus = 

  2x3 struct array with fields:

    A
    B
    C

여러 버스 포트의 초기화 구조체를 만들려면 port 핸들을 Simulink.Bus.createMATLABStruct에 대한 인수로 지정하십시오. 구조체로 구성된 결과 셀형 배열은 접지 값을 사용합니다.

모델 ex_two_outports_create_struct를 열고 시뮬레이션합니다.

open_system('ex_two_outports_create_struct')
sim('ex_two_outports_create_struct');

Bus Creator 블록인 Bus1Bus2의 port 핸들을 가져옵니다.

ph_1 = get_param...
     ('ex_two_outports_create_struct/Bus Creator','PortHandles');
ph_2 = get_param...
     ('ex_two_outports_create_struct/Bus Creator1','PortHandles');

port 핸들로 구성된 배열을 사용하여 MATLAB® 구조체를 만듭니다.

mStruct = Simulink.Bus.createMATLABStruct([ph_1.Outport ph_2.Outport])
mStruct =

  2x1 cell array

    {1x1 struct}
    {1x1 struct}

버스 신호에 연결된 포트를 기반으로 MATLAB 구조체를 만듭니다. 부분 구조체를 사용하여 포트에 연결된 버스의 버스 요소 일부에 값을 지정합니다.

모델 ex_bus_initial_conditions를 열고 시뮬레이션합니다.

open_system('ex_bus_initial_conditions')
sim('ex_bus_initial_conditions');

Top 버스 신호를 생성하는 Bus Creator 블록 포트의 port 핸들을 가져옵니다. Outport 핸들이 사용자에게 필요한 핸들입니다.

ph = get_param('ex_bus_initial_conditions/TopBus','PortHandles')
ph = 

  struct with fields:

      Inport: [174.0010 175.0009 176.0007]
     Outport: 178.0009
      Enable: []
     Trigger: []
       State: []
       LConn: []
       RConn: []
    Ifaction: []
       Reset: []
       Event: []

TopBus 블록에서 만든 버스 신호의 부분 구조체를 만듭니다. 부분 구조체를 사용하여 일부 버스 요소에 값을 지정합니다.

PartialstructForK = struct('A',struct('A1',4),'B',3)
PartialstructForK = 

  struct with fields:

    A: [1x1 struct]
    B: 3

구조체 필드 Top.BTop.A가 나타내는 버스 요소는 버스 계층 구조에서 동일한 수준에 있습니다. 이 부분 구조체를 사용하여 BA 버스 신호 요소의 접지 값을 재정의할 수 있습니다.

Bus 객체나 버스 포트에서 구조체를 만들 때 선택적 인수로 부분 구조체를 사용할 수 있습니다.

TopBus 블록의 port 핸들(ph)을 사용하여 MATLAB 구조체를 만듭니다. A.A1B 버스 요소의 접지 값을 재정의합니다.

outPort = ph.Outport;
mStruct = Simulink.Bus.createMATLABStruct(outPort,PartialstructForK)
mStruct = 

  struct with fields:

    A: [1x1 struct]
    B: 3
    C: [1x1 struct]

입력 인수

모두 축소

버스 정보의 소스로, Bus 객체 이름, port 핸들, Bus 객체 이름으로 구성된 셀형 배열 또는 port 핸들로 구성된 배열로 지정됩니다.

  • Bus 객체 이름을 사용하는 경우 Bus 객체는 MATLAB 기본 작업 공간 또는 모델에서 사용하는 데이터 사전에 있어야 합니다. Bus 객체 이름의 데이터형은 char 또는 string입니다.

  • port 핸들을 사용하는 경우 모델은 이 함수를 사용하기 전에 성공적으로 컴파일되어야 합니다. port 핸들의 데이터형은 double형입니다.

  • 버스로 구성된 배열의 경우 port 핸들을 사용할 수 없습니다.

  • dims 인수를 사용하는 경우 buses 인수에 대해 Bus 객체 또는 Bus 객체로 구성된 셀형 배열을 사용하십시오.

Bus 객체 이름으로 구성된 셀형 배열 또는 port 핸들로 구성된 배열을 지정하면 한 번의 Simulink.Bus.createMATLABStruct 호출로 여러 구조체를 만들며 별도의 Simulink.Bus.createMATLABStruct 호출을 사용하여 구조체를 만드는 것보다 성능이 더 좋습니다.

예: struct = Simulink.Bus.createMATLABStruct('BusObject')

예: structs = Simulink.Bus.createMATLABStruct({'BusObject','BusObject1'})

예: struct = Simulink.Bus.createMATLABStruct(portHandle)

예: structs = Simulink.Bus.createMATLABStruct([portHandle,portHandle1])

데이터형: double | char | string | struct | cell

결과 구조체의 일부 요소의 값으로, 빈 행렬([]), 부분 구조체 또는 셀형 배열로 지정됩니다. 셀형 배열은 각 지정된 버스 정보의 소스에 대해 부분 구조체 또는 빈 행렬을 포함해야 합니다.

부분 구조체 생성에 관한 자세한 내용은 Create Partial Structures for Initialization 항목을 참조하십시오.

접지 값을 사용하려면 빈 행렬을 사용하십시오.

예: struct = Simulink.Bus.createMATLABStruct('BusObject',PartialStruct)

데이터형: struct | cell

결과 구조체의 차원으로, 벡터로 지정됩니다.

각 차원 요소는 1 이상의 정수여야 합니다. values 인수에 대해 부분 구조체를 지정하면 각 차원 요소는 부분 구조체의 해당 차원 요소와 같거나 그보다 커야 합니다.

예: struct = Simulink.Bus.createMATLABStruct('BusObject',PartialStruct,[2 3])

예: structs = Simulink.Bus.createMATLABStruct({'Bus','Bus1','Bus2'},{[],[],[]},{1,2,3})

데이터형: double | cell

데이터 사전으로, Simulink.data.Dictionary 객체로 지정됩니다. 이 인수를 사용하기 전에, 예컨대 Simulink.data.dictionary.create 함수 또는 Simulink.data.dictionary.open 함수를 사용하여 Simulink.data.Dictionary 객체로 사전을 표현하십시오.

scope가 비어 있으면 함수는 MATLAB 기본 작업 공간을 Bus 객체의 소스로 사용합니다.

예: structs = Simulink.Bus.createMATLABStruct({'Bus','Bus1','Bus2'},{[],[],[]},{1,1,1},dataDictionaryObject)

출력 인수

모두 축소

버스와 동일한 신호 계층 구조와 속성을 가진 구조체로, MATLAB 구조체 또는 MATLAB 구조체로 구성된 셀형 배열로 반환됩니다.

구조체 차원은 사용자가 지정한 입력 인수에 따라 다릅니다.

  • buses 인수만 지정하면 차원은 1입니다.

  • values 인수도 지정하면 차원은 values의 차원과 일치합니다.

  • dims 인수를 지정하면 차원은 dims의 차원과 일치합니다.

  • Simulink.Bus.createMATLABStruct 함수를 동일한 모델에 반복적으로 사용하면(예: 스크립트의 루프에서 사용) 모델이 여러 번 컴파일되는 것을 방지하여 성능을 향상할 수 있습니다. 속도를 향상하려면 이 함수를 여러 번 사용하기 전에 모델을 컴파일하십시오. 예를 들어, mymodel이라는 모델을 컴파일하려면 다음 명령을 사용합니다.

    mymodel([],[],[],'compile')

    MATLAB 구조체를 만든 후에는 다음 명령을 사용하여 컴파일을 종료하십시오.

    mymodel([],[],[],'term')
  • 유형 편집기를 사용하여 Simulink.Bus.createMATLABStruct 함수를 호출할 수 있습니다. 유형 편집기에서 MATLAB 구조체를 만들려는 Simulink.Bus 객체를 마우스 오른쪽 버튼으로 클릭합니다. 그런 다음 MATLAB 구조체 만들기를 클릭합니다.

    MATLAB 편집기에서 MATLAB 구조체를 편집할 수 있습니다. 이 구조체의 값을 만들거나 업데이트하려면 코드를 실행하십시오.

  • Simulink.Bus.createMATLABStruct 함수를 사용하여 참조 모델 출력값의 초기값을 지정할 수 있습니다.

버전 내역

R2010a에 개발됨