我有一个以压缩行存储(CRS)格式存储的大型稀疏矩阵。这基本上是三个数组:包含Values的数组,Column Index的数组和包含Row Pointers的最终数组。例如。 http://web.eecs.utk.edu/~dongarra/etemplates/node373.html
我想将此信息写入文本(.txt)文件,该文件旨在使用 C 读取并放入三个数组中。我目前计划通过将值数组中的所有条目写在由逗号分隔的一个长行中来实现此目的。例如。 5.6,10,456,78.2,......等然后对其他两个数组做同样的事情。
我的 C 代码将结束读取第一行,将所有值放入标记为“Value”的数组中。等等。
问题
这是“正确的”吗?或者是否有将CRS数据放入文本文件的标准方法?
答案 0 :(得分:1)
我没有注意到的标准格式。您决定使您的生活变得轻松的格式。
首先,考虑一下如果要查看其中一个文本文件,您将立即被长线拖延。一些文本编辑可能只是讨厌你。将分割线分开是没有错的。
其次,考虑在文件的开头写出每个数组中的元素数量(好吧,我想这三个数组只有两个不同的数组长度)。这将允许您预分配数组。如果您拥有所有数组长度,则可以选择执行单个内存分配。
最后,考虑写出一些合理的标签名称。某种可以识别文件的标题是正确的格式,然后表示每个数组的开头。对于代码来说,检测文件问题是一种理智的做法。它可能只是一个角色,但它是一些东西。
现在......叫我一个蹩脚的老程序员,但我可能只是用二进制写的。特别是如果它是浮点数据,我不想处理当你将数字写成文本时所获得的精度损失(或者当你以完全精度编写它们时它们可以消耗的空间)。二进制文件易于编写和快速运行。如果您要在具有不同字节顺序的平台上使用它们,您必须要小心。
这是我的2美分价值。希望它对你有用。
答案 1 :(得分:0)
如果您想坚持使用一些广泛使用的标准,请查看Matrix Market。这是一个存储库,其中包含许多工程和科学问题。您也可以找到用于保存和读取矩阵的软件库。