Reference: Matrix

Model ElementReference_Matrixは、MotionSolveで使用される一般的な実数値のMxNマトリクスを定義します。

説明

MotionSolveでは、マトリクスは、次の4つの方法で指定できます:
  • XMLファイル内の行順または列順の密マトリクスとして
  • XMLファイル内の疎マトリクスとして
  • XMLファイル内で参照されるコンパイルされたユーザー作成サブルーチンで

XMLファイル内で参照されるインタープリタ型ユーザー作成サブルーチンで

フォーマット

MotionSolveでマトリクスを指定するための4つの方法を以下に示します。

密マトリクスフォーマット:
<Reference_Matrix
      id                = "integer"
     [label             = "string"]       
      nrow              = "integer"
      ncol              = "integer"
     [isroworder        = "TRUE"]>
      val_11, val_12, val_13, ... val_1n
      ...     ...     ...     ...
      val_11, val_12, val_13, ... val_1n
</Reference_Matrix>
XMLファイルで参照されるPythonユーザーサブルーチン内:
<Reference_Matrix
      id                  = "integer"
     [label               = "string"]      
      nrow                = "integer"
      ncol                = "integer"
      script_name         = "valid_path_name"
      interpreter         = "PYTHON" | "MATLAB
      usrsub_param_string = "USER(par_1, ... par_n)"
      usrsub_fnc_name     = "custom_fnc_name"
/>
疎マトリクスフォーマット:
<Reference_Matrix
      id                 = "integer"
     [label              = "string"]     
      nrow               = "integer"
      ncol               = "integer"
      nval               = "integer"
      issparse           = TRUE >
    
      row_index_1  col_index_1  val_1
      ...          ...        ...
      row_index_n  col_index_n  val_n
</Reference_Matrix>
XMLファイルで参照されるコンパイルされたユーザーサブルーチン内:
<Reference_Matrix
      id                  = "integer"
     [label               = "string"]      
      nrow                = "integer"
      ncol                = "integer"
      usrsub_dll_name     = "valid_path_name"
      usrsub_param_string = "USER (par_1, ... par_n)"
      usrsub_fnc_name     = "custom_fnc_name"
/>

属性

id
これは要素識別番号(整数 > 0)を指定します。この番号は、すべてのReference_Matrix要素の中で一意です。
label
Reference_Matrix要素の名前を指定します。このパラメータは省略可能です。
nrow
マトリクス内の行数。nrow > 0
ncol
マトリクス内の列数。ncol > 0
isroworder
マトリクスを行順で指定する場合は、"TRUE"に設定します。指定しない場合は、マトリクス要素が列順で指定されることを意味します。この引数は、密マトリクスでのみ有効です。
issparse
疎マトリクスの場合、"TRUE"に設定します。マトリクスが密の場合は使用しないでください。
nval
疎マトリクスでゼロ以外のエントリの数を指定します。密マトリクスを定義する場合は使用しないでください。指定する場合は、Nval > 0です。
usrsub_dll_name
ユーザーサブルーチンを含むDLLまたは共有ライブラリのパスと名前を指定します。MotionSolveはこの情報を使用して、実行時にDLL内のユーザーサブルーチンMatrix_Readを読み込みます。
usrsub_param_string
データファイルからユーザー定義のサブルーチンに渡されるパラメータのリストを定義します。この属性は、すべてのタイプのユーザーサブルーチンおよびスクリプトに共通です。
usrsub_fnc_name
ユーザーサブルーチンMatrix_Readの代替名を指定します。
script_name
usrsub_fnc_nameで指定されたルーチンを含むユーザー作成スクリプトのパスと名前を指定します。
interpreter
Specifies the interpreted language that the user script is written in. Valid choices are MATLAB or PYTHON.

次の例は、4行5列の密マトリクスを定義します。データは行順で指定されます。

<Reference_Matrix
    id                   = "1"
    nrow                 = "4"
    ncol                 = "5"
    isroworder           = "TRUE" >
       11.0, 12.0, 13.0, 14.0, 15.0
       21.0, 22.0, 23.0, 24.0, 25.0
       31.0, 32.0, 33.0, 34.0, 35.0
       41.0, 42.0, 43.0, 44.0, 45.0
</Reference_Matrix>

2番目の例は、上の4x5マトリクスを列順のフォーマットで指定する方法を示します。

<Reference_Matrix
     id                 = "1"
     nrow               = "4"
     ncol               = "5" >
        11.0, 21.0, 31.0, 41.0
        12.0, 22.0, 32.0, 42.0
        13.0, 23.0, 33.0, 43.0
        14.0, 24.0, 34.0, 44.0
        15.0, 25.0, 35.0, 45.0
  <Reference_Matrix>

3番目の例は、疎マトリクスを指定する方法を示します。

10x10マトリクスを指定するとします。ただし、これらのエントリのうちゼロ以外は13個のみです。これらを以下にライトグリーンでハイライト表示します。このような状況では、マトリクスを密として指定するより、疎として指定したほうがはるかに効率的です。疎マトリクスでは13個のゼロ以外のエントリを定義するだけですが、密マトリクスでは100個すべてのエントリを指定する必要があります。
図 1.

上記マトリクスを疎フォーマットで指定するためのMotionSolveステートメントは次のとおりです:

<Reference_Matrix
     id          = "1"
     nrow        = "10"
     ncol        = "10"
     nval        = "13" >
        1, 1, 3.3
        1, 7, 7.7
        2, 8, 2.9
        3, 9, 1.1
        3, 6, 2.2
        4, 4, 4.4
        5, 8, 7.6
        6, 2, 1.9
        7, 10, 9.2
        8, 7, 5.1
        9, 9, 10.
        10, 3, 4.2
</Reference_Matrix>

コメント

  1. Reference_Matrixは、一般的なM x Nマトリクスを定義します。
  2. Reference_Matrix要素は、Reference_ParamCurveおよびControl_Stateeqn要素によって参照されます。これらは必要に応じてほかのユーザーサブルーチンでも使用できます。
  3. 疎マトリクスフォーマットは、3分の2以上の要素がゼロの場合に使用します。
  4. ユーザー作成サブルーチンMatrix_Readを使用すると、ファイルからマトリックスデータを読み出すことができます。