分享
matlab如何很好的处理比较大的数据?
我在用matlab导入数据的时候,一共5万条记录的csv文件,如果只有两个变量共2兆左右时,2秒钟就成功搞定了,但是如果有1000多个变量时,数据约50兆,一旦运行读取程序电脑就会死机。而同样的数据用R语言约10s就搞定了。修改一下:有点失误,两个变量的数据为几百k,链接:http://pan.baidu.com/s/1c1lbLAg 密码:oz5r ,相应的R语言程序:# 读取数据trainy <- read.csv(“train_y.csv”)trainx <- read.csv(“train_x.csv”)相应的Matlab程序:trainy = csvread(‘train_y.csv’,2,0);另一个数据用程序和导入工具箱都会电脑死机————————————————————————今天发现一个新函数readtable(‘train_x.csv’);直接搞定了readtable(‘train_x.csv’);
回复 ( 4 )
你的数据格式什么样的?为什么两个变量是2M,1000多个变量才50M?你的读取程序怎么写的?
最好把文件发出来吧,50M上传网盘应该不麻烦
更新:
看了你发的文件,你的train_x.csv中的数据中有带引号的,csvread应该是不能读取的,下边是两种读取方法:
第一种是比较正常的读取方法,用textscan读取:
使用datastore()读取
环境:Matlab2015b, Win10x64, i3, 8G, SSD
耗时:7.2s
代码:
csv这个格式是比较好的,新版支持mapreduce,用起来相当方便。大文件,一般采用分块的方法读取,textscan,支持。
总体思路就是拆分,计算,合并,其实就是mapreduce,2015b自动可以采用开启配置好的集群。
循环变矩阵运算。
多核并行计算。