行列演算用Avenueライブラリ (2003.10.15)
技術資料トップへもどる
ArcView3のAvenueには配列のクラスは用意されていません。また行列のクラスも用意されていません。ここでは1次元配列の代わりにリストを、2次元配列の代わりに入れ子にしたリストのリストを使って作成した行列演算用のAvenueスクリプトのライブラリを紹介します。使用例は Avenueで最小二乗法を見てください。

基本的な操作
機 能 呼び出しと戻り値 コード
配列の宣言 value = av.Run( "Matrix.Declare", {行列名, 行数, 列数} )
戻り値:行列
Matrix.Declare
要素を代入 av.Run( "Matrix_SetElement", {行列名, 行数, 列数, 値} )
戻り値:なし
Matrix.SetElement
要素の値を取得 av.Run( "Matrix_GetElement", {行列名, 行数, 列数} )
戻り値:Number
Matrix.GetElement
要素の値を行ごとに表示 av.Run( "Matrix_ShowElements", 行列名 )
戻り値:なし
Matrix.ShowElements
要素の行数を取得 value = av.Run( "Matrix_Rows", 行列名 )
戻り値:Number
Matrix.Rows
要素の列数を取得 value = av.Run( "Matrix_Columns", 行列名 )
戻り値:Number
Matrix.Columns


簡単な計算と操作
積を求める演算は非可換(AB≠BA)であることに注意してください。
機 能 呼び出しと戻り値 コード
スカラー倍(定数倍) value = av.Run( "Matrix.Factor", {行列名, 定数} )
戻り値:行列
Matrix.Factor
加算 value = av.Run( "Matrix.Add", {行列名1, 行列名2} )
戻り値:行列
Matrix.Add
減算 value = av.Run( "Matrix.Subtract", {行列名1, 行列名2} )
戻り値:行列
Matrix.Subtract
行列の積 value = av.Run( "Matrix.Multiply", {行列名1, 行列名2})
戻り値:行列
Matrix.Multiply
転置行列 value = av.Run( "Matrix.Transpose", 行列名)
戻り値:行列
Matrix.Transpose


高度な操作
Avenneではスクリプトの再帰呼び出しができないので、
 行列の大きさによって呼び出すスクリプトを変えるようにしています。
機 能 呼び出しと戻り値 コード
指定した要素の余因数を求める
(3行3列の場合)
value = av.Run( "Matrix.CoFactor3", {行列名, 行番号, 列番号} )
戻り値:Number
Matrix.CoFactor3
指定した要素の余因数を求める
(4行4列の場合)
value = av.Run( "Matrix.CoFactor4", {行列名, 行番号, 列番号} )
戻り値:Number
Matrix.CoFactor4
行列式の値を求める
(2行2列の場合)
value = av.Run( "Matrix.Determinant2", 行列名 )
戻り値:Number
Matrix.Determinant2
行列式の値を求める
(3行3列の場合)
value = av.Run( "Matrix.Determinant3", 行列名 )
戻り値:Number
Matrix.Determinant3
行列式の値を求める
(4行4列の場合)
value = av.Run( "Matrix.Determinant4", 行列名 )
戻り値:Number
Matrix.Determinant4
逆行列を求める
(2行2列の場合)
value = av.Run( "Matrix.Inverse2", 行列名 )
戻り値:行列
Matrix.Inverse2
逆行列を求める
(3行3列の場合)
value = av.Run( "Matrix.Inverse3", 行列名 )
戻り値:行列
Matrix.Inverse3
逆行列を求める
(4行4列の場合)
value = av.Run( "Matrix.Inverse4", 行列名 )
戻り値:行列
Matrix.Inverse4
指定した要素の行と列を
除いた小行列を返す
value = av.Run( "Matrix.SM", 行列名 )
戻り値:行列
Matrix.SM


まとめてダウンロードしたい方はこちらからどうぞ。
技術資料トップへもどる

©2003-2006, 有限会社GISインスティテュート. All rights reserved.
〒183-0035 東京都府中市四谷3-49-18
電話・FAX:042-405-3901
gis-i@nifty.com