【发布时间】:2012-09-30 23:39:36
【问题描述】:
我一直在尝试将数据文件 (csv) 加载到在 win7(64 位)上运行的 matlab 64 位中,但出现与内存相关的错误。文件大小约为 3 GB,第一列包含日期 (dd/mm/yyyy hh:mm:ss),另外两列包含买卖价格。内存命令返回以下内容:
Maximum possible array: 19629 MB (2.058e+010 bytes) *
Memory available for all arrays: 19629 MB (2.058e+010 bytes) *
Memory used by MATLAB: 522 MB (5.475e+008 bytes)
Physical Memory (RAM): 16367 MB (1.716e+010 bytes)
* Limited by System Memory (physical + swap file) available.
这里有人可以解释一下,如果最大可能的数组大小是 19.6 GB,那么为什么 matlab 在导入大约 3GB 的数据数组时会抛出内存错误。如果这对有经验的人来说是一个简单的问题,我深表歉意,因为我在进程/应用程序内存管理方面几乎没有经验。
如果有人也建议能够将此数据集加载到 matlab 工作区的解决方案,我将不胜感激。
谢谢。
【问题讨论】:
-
您的 csv 中的数据被转换为本机数据类型。我不知道您是如何读取日期的,但数字是 8 字节双精度数。因此,根据文件中的数字,内存消耗可能大于文件大小本身。您需要显示更多信息,例如发布输入文件的一部分,以及用于读取它的代码。以及错误消息。
-
谢谢。我只是设法使用以下函数将数据加载到 matlab 中: textscan(fileid,'%s %f %f','Delimiter',',');日期字段为字符串。你是对的,当我观察资源利用率时,整个 16GB 内存都用于此目的。我需要了解可用于此的其他格式。非常感谢您的回复。