私の経験から、マトリックスは実際のコンテンツを表す方法で出力されます。すべての値を表す文字列を作成し、それらのサイズを知っていれば、スペースを使用してそれらすべての位置を調整できます。しかし、お気づきのように、大きなマトリックスは印刷サイズが非常に大きくなります。
あるいは、それらの次元だけでなく、それらについて持っているいくつかの情報を印刷することもできます - ヒルベルト行列を作成し、何も変更しなかった場合、それについての通知を表示できます。
あなたがtoString()
方法またはそれに相当する方法に限定されている場合、どの情報があなたにとって最も重要かを判断する必要があります。しかし、多くの場合、目的言語であろうと構造言語であろうと、情報のさまざまな部分を表示する専用のクラス/関数を簡単に作成できます。
さらに、たとえば Java では、デバッグ中に式を使用してオブジェクトのメソッドを呼び出すことができるため、ディメンションのみを表示しtoString()
、別のメソッド ( dump()
?) を作成してその内容を完全に表示することができます。
式やブレークポイントを使用できない場合は、デバッグ目的でのみ、すべての追加情報をコンソールではなくファイルに書き込むことができます。たとえば、Cでは、出力ストリームでグローバル変数を使用できます。たとえば、何も表示しない場合はnull、設定した場合は標準出力/ファイルです。
全体として、選択する言語に大きく依存します。クリーンまたはダーティとして認識されるアプローチを自動的に決定します。しかし、追加情報を保存し、それを表示するいくつかの方法またはレベルを作成し、必要なものを選択することは、私には良い考えのように思えます.
例、Javaでこの問題にどのようにアプローチしますか:
toString()
のようなものを表示するためにオーバーライドします[matrix: 4x4, square(det = 5.33323, dim = 3)]
。
dump()
すべての値を含む書式設定された文字列を返すcreateメソッド、
dumpForMatlab(File)
行列を Matlab/Octave 形式で保存するcreateメソッド。
デバッグ中:
基本的な情報はオブジェクトのプレビューで利用できます。
内部で何かが変更されたかどうかを確認したい場合、式は完全な行列を表示します。
より深い分析は、Matlab/Octave または行列を扱う専用の他のツールによって行われます。
もちろん、もし私がCIを使っていたら、言語と利用可能なツールに合わせて私のアプローチを変えるでしょう.