2

私は行列 m*n を持っています。次数 p のすべてのマイナー (部分行列の行列式) が必要です。

私は自分で書いた関数でそれを行うことができましたが、箱から出してすぐに使えるものを好みます。

私の本当の必要性は、シンボリック行列でランクが下がったときをチェックすることです。それは、そのランク以上のすべてのマイナーがゼロのときに発生します。

純粋なmatlabコマンドでそれを行うアイデアはありますか? ランクを評価する機能があるので、何とか未成年者を取得しています。

4

3 に答える 3

1

これは部分行列を計算します:

submatrix=@(M,r,c)M([1:r-1,r+1:end],[1:c-1,c+1:end])

'arrayfun' と 'meshgrid' または 2 つのループを使用して、すべての部分行列を反復処理できます。

于 2014-01-01T23:13:04.087 に答える
0

警告: Symbolic Toolbox はありませんが、通常の matlab 配列の場合、次のような無名関数を使用して i 番目、j 番目のマイナーを計算できます。

minor = @(i,j,A)det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))

または、i 番目、j 番目の余因子が必要な場合は、次を使用します。

cofactor = @(i,j,A)(-1)^(i+j)*det(A(setdiff([1:end],[i]),setdiff([1:end],[j])))

しかし、前述のように、このようなものが Symbolic Toolbox で機能するかどうかはわかりません。そのままでは機能しない場合でも、シンボリック ケースの関数をどのように実装するかについて、少なくともいくつかのアイデアが得られる可能性があります。

お役に立てれば。

于 2014-01-01T23:13:12.903 に答える