PostgreSQL用 多次元幾何オブジェクト

概要
多次元幾何オブジェクト geometric型の仕様
行列オブジェクト matrix型の仕様


行列オブジェクト matrix型の仕様

matrix型がサポートしている関数

行列の行数を取得します。

行列の列数を取得します。

部分行列を取得します。第2引数が行を、第3引数が列を指定します。それぞれ“1”が最初の行や列を表します。

部分行列を取得します。第2引数が開始行を、第3引数が開始列を指定します。それぞれ“1”が最初の行や列を表します。第4引数と第5引数はそれぞれ部分行列の行数と列数を指定します。

単位行列を作成します。次元数は引数で指定します。

転置行列を求めます(行と列の関係を交換します)。

行列とスカラー値の和を求めます。

下記のオペレータと等価です。

matrix + float8

行列の和を求めます。

下記のオペレータと等価です。

matrix + matrix

行列とスカラー値の差を求めます。

下記のオペレータと等価です。

matrix - float8

行列の差を求めます。

下記のオペレータと等価です。

matrix - matrix

行列とスカラー値の積を求めます。

下記のオペレータと等価です。

matrix * float8

行列の積を求めます。

下記のオペレータと等価です。

matrix * matrix

行列とスカラー値の商を求めます。

下記のオペレータと等価です。

matrix / float8

行列の右除算を実行します。サポートしている演算方法や制限などはmatrix_mldivideと同じです。

X = matrix_mrdivide(A, B) は、方程式 X B = A の解、あるいは最小二乗解を求めます。

下記のオペレータと等価です。

matrix / matrix

行列の左除算を実行します。サポートしている演算方法は以下のとおりです。

  1. 三角行列の交代代入法
  2. LU分解(ピボット選択あり)を利用した解法(連立方程式の解法)
  3. QR分解(ピボット選択あり)を利用した解法(最小二乗法)

この関数ではこれらの解法を自動選択します。なお、解が得られなかった場合にはNULLを返します。

X = matrix_mldivide(A, B) は、方程式 A X = B の解、あるいは最小二乗解を求めます。

なお、未完成のため左除算ができないパターンがあります。

下記のオペレータと等価です。

matrix ~/ matrix

平行移動を行なう座標変換行列を生成します。第1引数では変換対象となる座標空間の次元数を指定します。第2引数には平行移動する次元を、第3引数には移動量を指定します。

第2引数に0を指定すると、すべての次元を対象として移動する変換行列を生成します。

スケーリングを行なう座標変換行列を生成します。第1引数では変換対象となる座標空間の次元数を指定します。第2引数にはスケーリングを行なう次元を、第3引数には倍率を指定します。

第2引数に0を指定すると、すべての次元を対象としてスケーリングを行う変換行列を生成します。

回転を行なう座標変換行列を生成します。第1引数では変換対象となる座標空間の次元数を指定します。第2引数と第3引数には回転を行なう次元を、第3引数には角度を(度)で指定します。

第2引数で指定した次元の軸方向を、第3引数で指定した次元の軸方向へ回転します。

たとえば3次元空間において、Z軸を中心に90度回転する座標変換行列を生成するには以下のようにします。

matrix_grotate(3, 1, 2, 90)

3: 3次元空間
1: X軸方向を
2: Y軸方向へ
90: 90度回転

上記の逆回転なら、たとえば次の2パターンがあります。

matrix_grotate(3, 1, 2, -90)

3: 3次元空間
1: X軸方向を
2: Y軸方向へ
-90: -90度回転

matrix_grotate(3, 2, 1, 90)

3: 3次元空間
2: Y軸方向を
1: X軸方向へ
90: 90度回転
matrix型がサポートしているオペレータ

転置行列を求めます。

下記の関数と等価です。

matrix_transpose(matrix) returns matrix

行列とスカラー値の和を求めます。

下記の関数と等価です。

matrix_plus(matrix, float8) returns matrix

行列の和を求めます。

下記の関数と等価です。

matrix_mplus(matrix, matrix) returns matrix

行列とスカラー値の差を求めます。

下記の関数と等価です。

matrix_minus(matrix, float8) returns matrix

行列の差を求めます。

下記の関数と等価です。

matrix_mminus(matrix, matrix) returns matrix

行列のスカラー積を求めます。

下記の関数と等価です。

matrix_times(matrix, float8) returns matrix

行列の積を求めます。

下記の関数と等価です。

matrix_mtimes(matrix, matrix) returns matrix

行列とスカラー値の商を求めます。

下記の関数と等価です。

matrix_divide(matrix, float8) returns matrix

(現在はPostgreSQLのバグのため使えません)

行列の右除算を実行します。

下記の関数と等価です。

matrix_mrdivide(matrix, matrix) returns matrix

(現在はPostgreSQLのバグのため使えません)

行列の左除算を実行します。

下記の関数と等価です。

matrix_mldivide(matrix, matrix) returns matrix


Copyright (c) 1999 InterWIZ <staff@interwiz.koganei.tokyo.jp>, All rights reserved.
Supported by MINISTRY OF POSTS AND TELECOMMUNICATIONS (MPT) of japan
Supported by NTT Communications Corporation
Supported by KOKUSAI KOGYO CO., LTD.

インターウィズはこのプロジェクトにおいて、
郵政省のGIS技術開発プログラムの一環として活動しています。


ホームページ最新情報インターウィズ!?サービス紹介ソフトウェア工房メーリングリストNetSmile