在 MATLAB 中处理大型 CSV 文件

发布于 2024-11-02 08:18:43 字数 159 浏览 3 评论 0原文

我必须处理一个最大 2GB 的大 CSV 文件。更具体地说,我必须将所有这些数据上传到 mySQL 数据库,但在我必须对此进行一些计算之前,所以我需要在 MATLAB 中完成所有这些操作(我的主管也想在 MATLAB 中完成,因为他熟悉MATLAB :( )。

知道如何处理这些大文件吗?

I have to work with a big CSV file, up to 2GB. More specifically I have to upload all this data to the mySQL database, but before I have to make a few calculation on that, so I need to do all this thing in MATLAB (also my supervisor want to do in MATLAB because he familiar just with MATLAB :( ).

Any idea how can I handle these big files?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

牵你手 2024-11-09 08:18:43

您可能应该使用 textscan 分块读取数据,然后过程。这可能比一次读取一行更有效。例如,如果您有 3 列数据,您可以执行以下操作:

filename = 'fname.csv';
[fh, errMsg] = fopen( filename, 'rt' );
if fh == -1, error( 'couldn''t open file: %s: %s', filename, errMsg ); end
N  = 100; % read 100 rows at a time
while ~feof( fh )
  c  = textscan( fh, '%f %f %f', N, 'Delimiter', ',' );
  doStuff(c);
end

编辑

如今(R2014b 及更高版本),使用 数据存储

You should probably use textscan to read the data in in chunks and then process. This will probably be more efficient than reading a single line at a time. For example, if you have 3 columns of data, you could do:

filename = 'fname.csv';
[fh, errMsg] = fopen( filename, 'rt' );
if fh == -1, error( 'couldn''t open file: %s: %s', filename, errMsg ); end
N  = 100; % read 100 rows at a time
while ~feof( fh )
  c  = textscan( fh, '%f %f %f', N, 'Delimiter', ',' );
  doStuff(c);
end

EDIT

These days (R2014b and later), it's easier and probably more efficient to use a datastore.

同尘 2024-11-09 08:18:43

此文件交换项中提供了有关在 MATLAB 中处理大型数据集的好建议。

具体主题包括:
* 了解 MATLAB 中数组和工作区的最大大小
* 使用未记录的功能向您显示 MATLAB 中的可用内存
* 在 Windows XP 下设置 3GB 开关,为 MATLAB 增加 1GB 内存
* 使用textscan读取大型文本文件和内存映射功能读取大型二进制文件

There is good advice on handling large datasets in MATLAB in this file exchange item.

Specific topics include:
* Understanding the maximum size of an array and the workspace in MATLAB
* Using undocumented features to show you the available memory in MATLAB
* Setting the 3GB switch under Windows XP to get 1GB more memory for MATLAB
* Using textscan to read large text files and memory mapping feature to read large binary files

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文