gpt4 book ai didi

matlab - matlab中 "out of memory"错误的解决方法

转载 作者:行者123 更新时间:2023-12-01 15:56:33 25 4
gpt4 key购买 nike

我有一个非常大的文本文件(大约 11GB)需要在 matlab 中加载。但是当我使用“textread”函数时,“内存不足”错误发生了。并且没有办法减小文件大小.当我输入内存时,给我看这个。

memory
Maximum possible array: 24000 MB (2.517e+10 bytes) *
Memory available for all arrays: 24000 MB (2.517e+10 bytes) *
Memory used by MATLAB: 1113 MB (1.167e+09 bytes)
Physical Memory (RAM): 16065 MB (1.684e+10 bytes)

* Limited by System Memory (physical + swap file) available.

有没有人能解决这个问题?

最佳答案

@Anthony 建议了一种逐行读取文件的方法,这非常好,但是更新的 (>=R2014b) 版本的 MATLAB 有 datastore功能,旨在以 block 的形式处理大型数据文件。

根据文本文件的格式,有多种类型的datastore 可用。在最简单的情况下(例如 CSV 文件),自动检测效果很好,您可以简单地说

ds = datastore('myCsvFile.csv');
while hasdata(ds)
chunkOfData = read(ds);
... compute with chunkOfData ...
end

在最新 (>=R2016b) 版本的 MATLAB 中,您可以更进一步,将您的 datastore 包装到 tall 中大批。 tall 数组让您可以对太大而无法一次性放入内存的数据进行操作。 (在幕后,tall 数组以 block 的形式执行计算,并且仅当您通过调用 gather 请求它们时才为您提供结果)。例如:

tt = tall(datastore('myCsvFile.csv'));
data = tt.SomeVariable;
result = gather(mean(data)); % Trigger tall array evaluation

关于matlab - matlab中 "out of memory"错误的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55846862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com