我有一个变量sndpwr
,它有18000行,只有一列。当我使用fprintf
时,需要350mb的txt文件才能写入。即使csvwrite
和dlmwrite
也需要200多MB空间。
任何人都可以告诉我任何将它写在一个小文本文件中的函数或方法。我在另一个无法导入这样大文件的程序中导入它。
fid = fopen('sndpwr.txt','wt');
fprintf(fid,'%0.6f\r\n',sndpwr');
fclose(fid);
谢谢!
EDIt:在工作区中,它被描述为31957476x1 double。对不起以前的错误数据。
答案 0 :(得分:2)
不幸的是,如果不使用实际的压缩算法,就无法压缩数据。您有3x10^7
个数字,小数点后用六位数字写,至少有一个数字,以及几个换行符。这给出了3x10^7 * 10 = 3x10^8
个字节,作为最低限度。由于1MB大约为10^6
个字节,因此您将获得订单上的文件或300MB。
如果您使用double
数据类型以二进制文件写入文件,则文件可能会减少约20%,因为双精度数通常是64位(8字节数字)。如果您要使用single
数据类型,可能会丢失一些信息,因为single
只能保存大约5位十进制精度,但文件只能是其当前大小的40%。
如果二进制不是一个选项,您始终可以将数据拆分为较小的文本文件。