1

圧縮行ストレージ(CRS)形式で格納された大きなスパース行列があります。これは基本的に3つの配列です。値を含む配列、列インデックスの配列、および行ポインターを含む最後の配列です。例:http ://web.eecs.utk.edu/~dongarra/etemplates/node373.html

この情報をテキスト(.txt)ファイルに書き込みたいのですが、これはCを使用して読み取って3つの配列に入れることを目的としています。現在、Value配列のすべてのエントリを、コンマで区切られた1つの長い行に書き込むことでこれを行う予定です。例:5.6、10、456、78.2など。次に、他の2つのアレイについても同じようにします。

私のCコードは最初の行の読み取りを終了し、すべての値を「Value」というラベルの付いた配列に入れます。等々。

質問

これは正しいです"?または、CRSデータをテキストファイルに入れる標準的な方法はありますか?

4

2 に答える 2

1

私が知っている標準フォーマットはありません。あなたはあなたの人生を楽にするフォーマットを決定します。

まず、これらのテキストファイルのいずれかを見たい場合は、長い行にすぐに気が進まないことを考慮してください。一部のテキストエディタは単にあなたを嫌うかもしれません。行を分割しても問題はありません。

次に、ファイルの先頭に各配列の要素数を書き出すことを検討してください(3つの配列には2つの異なる配列長しかないと思います)。これにより、アレイを事前に割り当てることができます。すべての配列の長さが手元にある場合は、単一のメモリ割り当てを行うオプションがあります。

最後に、いくつかの賢明なタグ名を書き出すことを検討してください。ファイルを識別できるある種のヘッダーは正しい形式であり、次に各配列の開始を示すものです。これは、コードがファイルの問題を検出するための一種の健全なことです。たった1文字かもしれませんが、それは何かです。

さて...私を汚れた古いプログラマーと呼んでください、しかし私はたぶんたくさんをバイナリで書くでしょう。特に浮動小数点データの場合、数値をテキストとして書き出すときに得られる精度の低下(または完全な精度で書き出すときに消費できるスペース)に対処したくありません。バイナリファイルは簡単に作成でき、すばやく実行できます。エンディアンの順序が異なるプラットフォーム間でそれらを使用する場合は、注意が必要です。

それは私の2セントの価値です..それがあなたに役立つことを願っています。

于 2012-10-07T11:58:40.140 に答える
0

広く使用されている標準に固執したい場合は、マトリックスマーケットをご覧ください。これは、さまざまな工学および科学の問題で発生する多くのマトリックスを含むリポジトリです。マトリックスを保存して読み取るためのソフトウェアライブラリもあります。

于 2012-10-08T09:47:03.910 に答える