メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

Interpolate Matrix(x,y,z)

与えられた入力に対する補間行列を返す

  • Interpolate Matrix(x,y,z) block

ライブラリ:
Aerospace Blockset / GNC / Control

説明

Interpolate Matrix(x,y,z) ブロックは、行列の 3 次元配列を補間します。

この 3 次元のケースでは、行列が 3 つの独立変数の関数として定義されていると想定しています。

x = [ x 1 x 2 x 3 ... x i x i+1 ... x n ]

y = [ y 1 y 2 y 3 ... y j y j+1 ... y m ]

z = [ z 1 z 2 z 3 ... z k z k+1 ... z p ]

xyz の値が与えられた場合、8 つの行列が補間されます。そして

x i < x < x i+1

y j < y < y j+1

z k < z < z k+1

出力行列は次のように与えられる。

(1λz){(1λy)[(1λx)M(xi,yj,zk)+λxM(xi+1,yj,zk)]             +λy[(1λx)M(xi,yj+1,zk)+λxM(xi+1,yj+1,zk)]}   +λz{(1λy)[(1λx)M(xi,yj,zk+1)+λxM(xi+1,yj,zk+1)]            +λy[(1λx)M(xi,yj+1,zk+1)+λxM(xi+1,yj+1,zk+1)]}

ここで、3つの補間分数は次のように表される。

λx=(xxi)/(xi+1xi)λy=(yyj)/(yj+1yj)λz=(zzk)/(zk+1zk)

3 次元の場合、補間は最初に x に対して実行され、次に y に対して実行され、最後に z に対して実行されます。

補間する行列は 5 次元である必要があり、最初の 2 次元は xy、および z の各値の行列に対応します。たとえば、8つの行列ABCDEFGHxyzの値で定義されている場合、対応する入力行列は次のように表されます。

(x = 0.0,y = 1.0,z = 0.1) matrix(:,:,1,1,1) = A;
(x = 0.0,y = 1.0,z = 0.5) matrix(:,:,1,1,2) = B;
(x = 0.0,y = 3.0,z = 0.1) matrix(:,:,1,2,1) = C;
(x = 0.0,y = 3.0,z = 0.5) matrix(:,:,1,2,2) = D;
(x = 1.0,y = 1.0,z = 0.1) matrix(:,:,2,1,1) = E;
(x = 1.0,y = 1.0,z = 0.5) matrix(:,:,2,1,2) = F;
(x = 1.0,y = 3.0,z = 0.1) matrix(:,:,2,2,1) = G;
(x = 1.0,y = 3.0,z = 0.5) matrix(:,:,2,2,2) = H;

制限

このブロックは Prelookup ブロックから駆動される必要があります。

端子

入力

すべて展開する

最初の補間インデックス i。スカラーとして指定されます。

データ型: double

最初の補間分数 λ x はスカラーとして指定されます。

データ型: double

2 番目の補間インデックス j。スカラーとして指定されます。

データ型: double

2 番目の補間分数 λ y。スカラーとして指定されます。

データ型: double

3 番目の補間インデックス k。スカラーとして指定されます。

データ型: double

3 番目の補間分数 λ z。スカラーとして指定されます。

データ型: double

出力

すべて展開する

補間行列。行列として指定されます。

データ型: double

パラメーター

すべて展開する

補間される行列。5 つのインデックスがあり、3 番目、4 番目、5 番目のインデックスは、xyz の補間値にラベルを付けます。

プログラムでの使用

ブロック パラメーター: matrix
: 文字ベクトル
: 行列
既定の設定: 'matrix'

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入