行列の特異値分解 (convenience function)

Namespace: FVIL.Data
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
public virtual void svd2(
	CFviMatrix u,
	CFviMatrix vt,
	DOUBLE_ARRAY sigma,
	int mode,
	double rcond,
	ref int rank
)
Visual Basic
Public Overridable Sub svd2 ( 
	u As CFviMatrix,
	vt As CFviMatrix,
	sigma As DOUBLE_ARRAY,
	mode As Integer,
	rcond As Double,
	ByRef rank As Integer
)

Parameters

u
Type: FVIL.Data..::..CFviMatrix
(out) MxN の直行行列。
※必要に応じて内部で再確保されます。
※不要な場合は null を指定してください。
vt
Type: FVIL.Data..::..CFviMatrix
(out) MxN の直行行列。
※必要に応じて内部で再確保されます。
※不要な場合は null を指定してください。
sigma
Type: FVIL..::..DOUBLE_ARRAY
(out) 昇順にソートされた特異値配列。
※必要に応じて内部で再確保されます。
※不要な場合は null を指定してください。
mode
Type: System..::..Int32
(in) 演算モード [0,1,2]
  • 0 : full SVD ( u は MxM 行列, vt は NxN 行列, sigma の次元は L ) sigma[K] から sigma[L-1] は常に 0 になります。
  • 1 : full SVD または economy SVD 。
    • M≦N の時、full SVD 。
    • M>N の時、economy SVD 。
  • 2 : economy SVD ( u は MxK 行列, vt は KxN 行列, sigma の次元は K )
rcond
Type: System..::..Double
(in) ランク計算時の閾値設定。
ランク計算時に 特異値 sigma[i] ≦ rcond*sigma[0] の値をゼロと見なします。
rcond<0.0 の値が指定されたときは、max(sigma) * eps の値を使用します。
rank
Type: System..::..Int32%
(out) ランクの値。

Remarks

現在の行列(MxN 行列)の特異値分解を行います。

処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。


エラーコード:
ErrorCode メンバ内容
51FVIL.ErrorCode.LICENSE_ERRORライセンスがありません。
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリの確保に失敗しました。
11FVIL.ErrorCode.INVALID_PARAMETERパラメータが不正です。
12FVIL.ErrorCode.INVALID_OBJECTメモリが確保されていません。
29FVIL.ErrorCode.NOT_CALCULABLE計算できません。

関連する FIE 関数:

fnFIE_mat_svd2

Exceptions

ExceptionCondition
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also