주요 콘텐츠

Simulink.Bus.createMATLABStruct

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

설명

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

예제

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

예제

S = Simulink.Bus.createMATLABStruct(busSource,vals,sdims)sdims로 지정된 차원을 갖는 하나 이상의 구조체를 만듭니다. 버스로 구성된 배열에 대한 구조체를 만들려면 sdims 인수를 포함하십시오.

예제

S = Simulink.Bus.createMATLABStruct(busSource,vals,sdims,scope)scope로 지정된 데이터 사전에 하나 이상의 구조체를 만듭니다.

예제

모두 축소

이름이 BusInitialization인 예제 모델을 열고 컴파일합니다. 모델을 컴파일하면 선 스타일이 업데이트되며, 이를 통해 버스를 시각적으로 식별할 수 있습니다.

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

모델의 preload 콜백은 TopBus와 같은 Simulink.Bus 객체를 불러옵니다. Unit Delay 블록을 통과하는 버스는 이 bus 객체를 사용합니다.

TopBus와 동일한 계층 구조 및 특성을 갖는 MATLAB 구조체를 만듭니다. 구조체의 이름을 mstruct로 지정합니다.

mstruct = Simulink.Bus.createMATLABStruct("TopBus")
mstruct = struct with fields:
    A: [1×1 struct]
    B: 0
    C: [1×1 struct]

함수는 구조체의 각 필드에 0의 그라운드 값을 할당합니다.

TopBus.A.A1에 대응하는 필드에 3의 값을 지정합니다.

mstruct.A.A1 = 3;

구조체의 다른 필드는 계속해서 0의 값을 지정합니다.

Unit Delay 블록의 초기 조건 구조체로 mstruct를 지정하려면 초기 조건 블록 파라미터를 mstruct로 설정하십시오.

여러 개의 포트에서 버스에 대한 초기화 구조체를 만들려면 Simulink.Bus.createMATLABStruct 함수와 함께 여러 개의 port 핸들을 사용합니다. 구조체로 구성된 결과 셀형 배열은 그라운드 값을 사용합니다.

이름이 BusInitializationTwoPorts인 예제 모델을 열고 컴파일합니다.

mdl = "BusInitializationTwoPorts";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitializationTwoPorts model

각 Bus Creator 블록의 출력 포트 핸들을 가져옵니다.

bc1 = "BusInitializationTwoPorts/Bus Creator";
ph1 = get_param(bc1,"PortHandles");
out1 = ph1.Outport;

bc2 = "BusInitializationTwoPorts/Bus Creator1";
ph2 = get_param(bc2,"PortHandles");
out2 = ph2.Outport;

각 버스에 대한 구조체를 포함하는 셀형 배열을 만들기 위해 Simulink.Bus.createMATLABStruct 함수에 port 핸들로 구성된 배열을 제공합니다.

structs = Simulink.Bus.createMATLABStruct([out1 out2])
structs=2×1 cell array
    {1×1 struct}
    {1×1 struct}

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

이름이 BusInitialization인 예제 모델을 열고 컴파일합니다. 모델을 컴파일하면 선 스타일이 업데이트되며, 이를 통해 버스를 시각적으로 식별할 수 있습니다.

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

버스 계층 구조의 일부 요소에 값을 지정하는 부분 구조체를 만듭니다. 부분 구조체에 Top.A.A1 요소와 Top.B 요소의 값을 지정합니다.

pstruct = struct("A",struct("A1",4),"B",3)
pstruct = struct with fields:
    A: [1×1 struct]
    B: 3

전체 구조체를 만들려면 Simulink.Bus.createMATLABStruct 함수를 사용합니다.

첫 번째 입력 인수로 최상위 버스를 생성하는 Bus Creator 블록 출력 포트의 핸들을 가져옵니다.

bctop = "BusInitialization/Bus Creator3";
ph = get_param(bctop,"PortHandles");
out = ph.Outport;

두 번째 입력 인수로 부분 구조체를 지정합니다. 부분 구조체는 Top.A.A1 요소와 Top.B 요소의 그라운드 값을 재정의합니다.

fstruct = Simulink.Bus.createMATLABStruct(out,pstruct)
fstruct = struct with fields:
    A: [1×1 struct]
    B: 3
    C: [1×1 struct]

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

이름이 BusInitialization인 예제 모델을 열고 컴파일합니다. 모델을 컴파일하면 선 스타일이 업데이트되며, 이를 통해 버스를 시각적으로 식별할 수 있습니다.

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

버스 계층 구조의 일부 요소에 값을 지정하는 부분 구조체를 만듭니다. 부분 구조체에 요소 Top.B와 요소 Top.C.C1의 값을 지정합니다.

신호 요소 Top.C.C1은 데이터형 int16형을 사용합니다. 구조체에서 C.C1 필드의 값을 설정하려면 데이터형을 지정한 표현식을 사용합니다. 표현식의 데이터형을 모델에서 신호의 데이터형과 일치시킵니다.

pstruct = struct("B",3,"C",struct("C1",int16(5)));

전체 구조체를 만들려면 Simulink.Bus.createMATLABStruct 함수를 사용합니다.

첫 번째 입력 인수로 최상위 버스를 생성하는 Bus Creator 블록 출력 포트의 port 핸들을 가져옵니다.

bctop = "BusInitialization/Bus Creator3";
ph = get_param(bctop,"PortHandles");
out = ph.Outport;

두 번째 입력 인수로 부분 구조체를 지정합니다. 부분 구조체는 Top.C.C1 요소와 Top.B 요소의 그라운드 값을 재정의합니다.

fstruct = Simulink.Bus.createMATLABStruct(out,pstruct);

fstruct.C.C1의 값을 확인합니다.

fstruct.C.C1
ans = int16

5

이 필드는 데이터형 int16형을 사용합니다.

이름이 BusInitialization인 예제 모델을 열고 컴파일합니다. 모델을 컴파일하면 선 스타일이 업데이트되며, 이를 통해 버스를 시각적으로 식별할 수 있습니다.

mdl = "BusInitialization";
open_system(mdl)
set_param(mdl,SimulationCommand="Update")

BusInitialization model

모델의 preload 콜백은 TopBus와 같은 Simulink.Bus 객체를 불러옵니다. Unit Delay 블록을 통과하는 버스는 이 bus 객체를 사용합니다.

최상위 버스의 일부 버스 요소에 대한 부분 구조체를 만듭니다.

pstruct = struct("A",struct("A1",4),"B",3)  
pstruct = struct with fields:
    A: [1×1 struct]
    B: 3

이름이 TopBusSimulink.Bus 객체, 이름이 pstruct인 부분 구조체, 결과 구조체의 차원을 사용하여 전체 구조체를 만듭니다.

fstruct = Simulink.Bus.createMATLABStruct("TopBus",...
    pstruct,[2 3])
fstruct=2×3 struct array with fields:
    A
    B
    C

입력 인수

모두 축소

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

  • Simulink.Bus 객체를 지정하는 경우 Simulink.Bus 객체는 MATLAB 기본 작업 공간 또는 모델에서 사용하는 데이터 사전에 있어야 합니다.

  • port 핸들을 지정하는 경우 모델이 성공적으로 컴파일되어야 합니다.

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

  • sdims 인수를 사용하는 경우 busSourceSimulink.Bus 객체 또는 Simulink.Bus 객체로 구성된 셀형 배열로 지정하십시오.

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

예: S = Simulink.Bus.createMATLABStruct('BusObject')Simulink.Bus 객체 이름을 통해 하나의 버스 소스를 지정합니다.

예: S = Simulink.Bus.createMATLABStruct({'BusObject','BusObject1'})Simulink.Bus 객체 이름으로 구성된 셀형 배열을 통해 여러 버스 소스를 지정합니다.

예: S = Simulink.Bus.createMATLABStruct(ph)는 port 핸들을 통해 하나의 버스 소스를 지정합니다.

예: S = Simulink.Bus.createMATLABStruct([ph,ph1])은 port 핸들로 구성된 배열을 통해 여러 버스 소스를 지정합니다.

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

부분 구조체 생성에 관한 자세한 내용은 Specify Initial Conditions for Bus Elements 항목을 참조하십시오.

그라운드 값을 사용하려면 빈 행렬을 사용하십시오.

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

데이터형: struct | cell

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

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

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

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

데이터형: double | cell

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

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

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

출력 인수

모두 축소

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

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

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

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

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

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

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

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

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

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

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

버전 내역

R2010a에 개발됨