MATLAB需要巨大的350 MB内存才能将一个列向量写入txt文件

时间:2015-11-02 16:00:26

标签: matlab

我有一个变量sndpwr,它有18000行,只有一列。当我使用fprintf时,需要350mb的txt文件才能写入。即使csvwritedlmwrite也需要200多MB空间。

任何人都可以告诉我任何将它写在一个小文本文件中的函数或方法。我在另一个无法导入这样大文件的程序中导入它。

fid = fopen('sndpwr.txt','wt');
fprintf(fid,'%0.6f\r\n',sndpwr');
fclose(fid);

谢谢!

EDIt:在工作区中,它被描述为31957476x1 double。对不起以前的错误数据。

1 个答案:

答案 0 :(得分:2)

不幸的是,如果不使用实际的压缩算法,就无法压缩数据。您有3x10^7个数字,小数点后用六位数字写,至少有一个数字,以及几个换行符。这给出了3x10^7 * 10 = 3x10^8个字节,作为最低限度。由于1MB大约为10^6个字节,因此您将获得订单上的文件或300MB。

如果您使用double数据类型以二进制文件写入文件,则文件可能会减少约20%,因为双精度数通常是64位(8字节数字)。如果您要使用single数据类型,可能会丢失一些信息,因为single只能保存大约5位十进制精度,但文件只能是其当前大小的40%。

如果二进制不是一个选项,您始终可以将数据拆分为较小的文本文件。