Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

xsort

状態区分に基づいて状態を並べ替える

    説明

    xsys = xsort(sys) は、状態区分に基づいて x ベクトルまたは q ベクトルを並べ替えます。モデル コンポーネント間の信号ベースの接続と物理インターフェイスによって、一部の内部信号や内力が余分な状態になる微分代数方程式 (DAE) モデルが生じます。sparss および mechss モデル オブジェクトの StateInfo プロパティは、サブコンポーネント、インターフェイス変数、および信号変数への状態区分を追跡します。

    すべて折りたたむ

    この例では、スパース 2 次モデルを含む sparseSOSignal.mat について考えます。アクチュエータ、センサー、コントローラーを定義して、それらをフィードバック ループでプラントに接続します。

    スパース行列を読み込み、mechss オブジェクトを作成します。

    load sparseSOSignal.mat
    plant = mechss(M,C,K,B,F,[],[],'Name','Plant');

    次に、伝達関数を使用してアクチュエータとセンサーを作成します。

    act = tf(1,[1 0.5 3],'Name','Actuator');
    sen = tf(1,[0.02 7],'Name','Sensor');

    プラントの PID コントローラー オブジェクトを作成します。

    con = pid(1,1,0.1,0.01,'Name','Controller');

    feedback コマンドを使用して、プラント、センサー、アクチュエータ、およびコントローラーをフィードバック ループ内で接続します。

    sys = feedback(sen*plant*act*con,1)
    Sparse continuous-time second-order model with 1 outputs, 1 inputs, and 7111 nodes.
    
    Use "spy" and "showStateInfo" to inspect model structure. 
    Type "properties('mechss')" for a list of model properties. 
    Type "help mechssOptions" for available solver options for this model.
    

    mechss オブジェクトがどのモデル オブジェクト タイプよりも優先されるため、結果のシステム sysmechss オブジェクトになります。

    showStateInfo を使用してコンポーネントと信号グループを表示します。

    showStateInfo(sys)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant       7102
      Signal                        1
      Component     Actuator        2
      Signal                        1
      Component    Controller       2
      Signal                        1
      Signal                        1
    

    xsort を使用してコンポーネントと信号を並べ替えてから、コンポーネントと信号グループを表示します。

    sysSort = xsort(sys);
    showStateInfo(sysSort)
    The state groups are:
    
        Type          Name       Size
      -------------------------------
      Component      Sensor         1
      Component      Plant       7102
      Component     Actuator        2
      Component    Controller       2
      Signal                        4
    

    コンポーネントが信号区分の前に順序付けされていることを確認します。信号は並べ替えられて、単一の区分にグループ化されます。

    spy を使用して結果のシステムのスパース パターンを可視化することもできます。

    spy(sysSort)

    Figure contains an axes. The axes with title nnz: M=170134, C=5, K=340360, B=3, F=1. contains 17 objects of type line. These objects represent K, B, F, D.

    この例では、下の図に示すように、各頂点の支柱に連結されている 2 枚の四角形のプレートで構成される構造モデルを考えます。下のプレートは地面にしっかり取り付けられ、支柱は四角形のプレートの各頂点にしっかり取り付けられています。

    platePillarModel.mat に含まれている有限要素モデル行列を読み込み、上記システムを表すスパース 2 次モデルを作成します。

    load('platePillarModel.mat')
    sys = ...
       mechss(M1,[],K1,B1,F1,'Name','Plate1') + ...
       mechss(M2,[],K2,B2,F2,'Name','Plate2') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar3') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar4') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar5') + ...
       mechss(Mp,[],Kp,Bp,Fp,'Name','Pillar6');

    mechss モデル オブジェクトのコンポーネントを確認するには showStateInfo を使用します。

    showStateInfo(sys)
    The state groups are:
    
        Type        Name      Size
      ----------------------------
      Component    Plate1     2646
      Component    Plate2     2646
      Component    Pillar3     132
      Component    Pillar4     132
      Component    Pillar5     132
      Component    Pillar6     132
    

    次に、相互作用するノード インデックス データを nodeData.mat から読み込み、interface を使用して 2 枚のプレートと 4 本の支柱間の物理接続を作成します。nodes は、最初の 2 つの行に 1 枚目と 2 枚目のプレートのノード インデックス データを含み、他の 4 つの行に 4 本の支柱のインデックス データを含む 6x7 cell 配列です。

    load('nodeData.mat','nodes')
    for i=3:6
       sys = interface(sys,"Plate1",nodes{1,i},"Pillar"+i,nodes{i,1});
       sys = interface(sys,"Plate2",nodes{2,i},"Pillar"+i,nodes{i,2});
    end

    下のプレートと地面間の接続を指定します。

    sysCon = interface(sys,"Plate2",nodes{2,7});

    物理インターフェイスを確認するには showStateInfo を使用します。

    showStateInfo(sysCon)
    The state groups are:
    
        Type            Name         Size
      -----------------------------------
      Component        Plate1        2646
      Component        Plate2        2646
      Component       Pillar3         132
      Component       Pillar4         132
      Component       Pillar5         132
      Component       Pillar6         132
      Interface    Plate1-Pillar3      12
      Interface    Plate2-Pillar3      12
      Interface    Plate1-Pillar4      12
      Interface    Plate2-Pillar4      12
      Interface    Plate1-Pillar5      12
      Interface    Plate2-Pillar5      12
      Interface    Plate1-Pillar6      12
      Interface    Plate2-Pillar6      12
      Interface    Plate2-Ground        6
    

    spy を使用して、最終モデルのスパース行列を可視化できます。

    spy(sysCon)

    Figure contains an axes. The axes with title nnz: M=95256, K=249052, B=1, F=1. contains 37 objects of type line. These objects represent K, B, F, D.

    この例のデータセットは、ASML の Victor Dolk によって提供されています。

    入力引数

    すべて折りたたむ

    スパース状態空間モデル。sparss または mechss モデル オブジェクトとして指定します。

    出力引数

    すべて折りたたむ

    コンポーネントが並べ替えられたスパース状態空間モデル。sparss または mechss モデル オブジェクトとして返されます。並べ替えられた xsys では、すべてのコンポーネントが最初に表示され、インターフェイスが続き、その後にすべての内部信号の単一グループが続きます。行列 sEAs2+s+K には、次のブロック矢印構造があります。

    ここで、各対角ブロックは、sys のサブコンポーネントです。最後の行と列は Interface グループと Signal グループを組み合わせてコンポーネント間のすべての結合と接続を取得します。

    R2020b で導入