2017-03-21 3 views
2

これは非常に簡単な問題です。行列を数値で表すことはできますか?

私は行列全体を単一の数字として返信したいと思います。例えば、

は、以下のように、私は3×3行列をした言う:

[1 2 3 4 5 6 7 8 9]

Iは、単一の数として、この行列を表すことができますか?

この質問をしたので、なぜ私がこれをしたいのか教えてください。

私は2つの行列を持っています.2つの行列の差を1つの数として求めています。私が実際に望むのは、異なる/類似の2つの行列が(行列ではなく)単一の数で表される方法を見つけることです。です。

+0

それは各行列要素のサイズに依存します –

+0

私は実際にあなたが '1つの数で行列を表現する'ことを意味しません。行列の数の和のように、または何か他のもの – monster

+0

[マトリックスの基準](https://en.wikipedia.org/wiki/Matrix_norm)とそれらで実現できる自然な距離の指標についてお読みください。 – LutzL

答えて

2

マトリクスをとりスカラー数を生成するファンクションファミリがあります。https://en.wikipedia.org/wiki/Matrix_norm単純な推奨が必要な場合は、Frobeniusノルムを使用します。 Pythonで:

import numpy as np 
frobenius = lambda matrix: np.sqrt(np.sum(matrix ** 2)) 

(あるいは、単にscipy.linalg.norm(matrix, 'fro')を使用することがサポートしている多くの規範を示していますscipy.linalg.normドキュメントを参照してください!。)今

。あなたは数として類似性に間マトリックスを定量化したい場合は、差のノルムを使用します。

frobenius(matrix1 - matrix2) 

は最初の規範を取るし、それらを減算しないでください、それはありません行列の距離を測定する信頼できる方法です(つまり、frobenius(matrixA) - frobenius(matrixB) # BAD BAD BAD!))

0

あなたは自然数の集合に行列の空間から全単射関数fを定義することができます。

f: M -> N 

あなたはアルゴリズム的ハッシュ関数を使用して、このアプローチを実装することができます。

+0

行列の間の距離をスカラーとして表すことが目的ならば、絶対にハッシュを使いたくない。 –

+1

あなたのためのクールなイメージ、Ayoub Falah。 Mandelbrotセットが大好きです。ニースの答えも。 – duffymo

+0

@AhmedFasih "行列間の距離"私はこの用語を知らない、私は距離が実数であるので数学的見地から正しいとは思わないが、2つの行列の違いは同じ型の行列を与えるポスターが「両方の行列のサイズが同じである」の下でアプローチが議論される回答があります。なぜなら、同じ型を持たない場合には違いが定義されていないからです。行列を数値にマップする:私はあなたの「含意」の事後条件を理解していません。 –

1

2つの行列の差を1つの数値にしたいとします。したがって、2つの行列を1つの数値として表現し、その差を取ることは望ましくありません。これはうまくいくが、情報を破壊することになります。

行列のサイズが同じ場合は、平方根の平方根をとる。 a {0} [0] -b [0] [0] squaredなど。次に、合計と平均と平方根を(その順に)とる。

関連する問題