1

我有一个以压缩行存储(CRS)格式存储的大型稀疏矩阵。这基本上是三个数组:一个包含值的数组、一个列索引数组和一个包含行指针的最终数组。例如http://web.eecs.utk.edu/~dongarra/etemplates/node373.html

我想将此信息写入文本 (.txt) 文件,该文件旨在使用C读取并放入三个数组中。我目前计划通过将 Value 数组中的所有条目写在一个用逗号分隔的长行中来做到这一点。例如 5.6,10,456,78.2,... 等。然后对其他两个数组执行相同操作。

我的C代码将结束读取第一行,将所有值放入标有“Value”的数组中。等等。

问题

这个对吗”?或者是否有将 CRS 数据放入文本文件的标准方法?

4

2 回答 2

1

没有我知道的标准格式。您决定了一种让您的生活变得轻松的格式。

首先,考虑一下,如果您想查看其中一个文本文件,您会立即被冗长的行所拖累。一些文本编辑器可能只是讨厌你。拆分线没有错。

其次,考虑在文件的开头写出每个数组中元素的数量(好吧,我想三个数组只有两个不同的数组长度)。这将让您预先分配您的数组。如果您手头有所有数组长度,则可以选择进行单个内存分配。

最后,考虑写出一些合理的标签名称。可以识别您的文件的某种标题是正确的格式,然后是表示每个数组的开头的东西。对于您的代码来说,检测文件问题是一件很理智的事情。它可能只是一个角色,但它是某种东西。

现在......称我为邋遢的老程序员,但我可能只是用二进制写了很多。特别是如果它是浮点数据,我不想处理当您将数字写为文本时获得的精度损失(或者当您以全精度编写它们时它们可以消耗的空间)。二进制文件易于编写和快速运行。如果您要在具有不同字节序的平台上使用它们,您只需要小心。

那是我的 2 美分价值。希望它对你有用。

于 2012-10-07T11:58:40.140 回答
0

如果您想坚持一些广泛使用的标准,请查看Matrix Market。这是一个存储库,其中包含在各种工程和科学问题中出现的许多矩阵。您还可以找到软件库来保存和读取矩阵。

于 2012-10-08T09:47:03.910 回答