行列の特異値分解 (convenience function)
Namespace: FVIL.DataAssembly: 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 メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | ライセンスがありません。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリの確保に失敗しました。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | パラメータが不正です。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | メモリが確保されていません。 |
29 | FVIL.ErrorCode.NOT_CALCULABLE | 計算できません。 |
関連する FIE 関数:
fnFIE_mat_svd2
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |