我正在Linux集群上的C程序中生成长双浮点数据.我需要将数据导出到尚未安装在群集上的Matlab.
什么是最好的方法?我的顾问说要使用printf语句导出.我认为他的意思是将数据发送到逗号分隔的文件(和fprintf).但是在我看来,这可能会很慢,并且会占用太多内存,并且我们可能会失去很多精度.
我发现this web page可用于读写.MAT文件,但我并不真正理解页面或the example,我已将其复制到群集中,但无法编译(因为它缺少显然来自MATLAB的库).
从Linux / C向Windows / MATLAB导出数据的最佳,最简便或最快的方法是什么?如何开始使用该方法?当您回答我刚接触C时,将被告知,可能需要帮助弄清楚如何获取,安装,配置和链接任何库.但是一旦完成,我想我会很擅长学习使用它们.
解决方法:
为什么您认为自己会失去精度? CSV的唯一缺点是ASCII文件比二进制文件需要更多的存储空间,但是在当今这样的时代,以良好的剪发价格获得数TB的存储空间,这似乎不是问题.
仅当您在千兆字节上写入千兆字节时,速度才会明显变慢,但通常计算所需的时间要长得多,以至于ASCII和二进制之间的差异完全可以忽略不计(并且如果计算所需的时间不长:为什么需要群集)然后?)
无论如何,我都会选择ASCII码-如何在两个地方记录和读取一些二进制blob,在写入端和读取端都容易产生bug,因为没有人类可以读取文件等.此外,MAT文件的格式可能会在Matlab的下一个发行版中更改(与过去一样).
使用ASCII时,您不会遇到任何问题,我唯一想到的缺点是您必须在Matlab中编写一个小型的群集特定文件读取器(与找出所有错误并维护MAT相比,它的工作量要少得多.文件编写器).
无论如何,在Matlab中有大量用于ASCII的工具:textread,dlmread,importdata等.在C端,确实只需使用fprintf(文档here).
标签:c-3,linux,matlab
来源: https://codeday.me/bug/20191127/2074056.html