将CSV保存为.MAT或二进制文件

时间:2013-12-28 18:52:12

标签: optimization csv converter octave

我正在使用Octave并且要加载~80 mb .csv文件。

csvread()需要很长时间才能加载。

如何将csv文件保存为.mat文件或二进制文件,或者至少加快Octave csvread()的速度?

提前谢谢!

3 个答案:

答案 0 :(得分:1)

好吧,如果您还使用r,则可以执行以下操作:

  1. 使用" read.csv"在R中读入文件;
  2. 使用R包" R.matlab"写一个" .mat"文件
  3. 现在您可以加载.mat文件"更快"在八度 - 但步骤1("阅读csv")也可能很慢;

答案 1 :(得分:1)

这是一个python版本(使用numpy和scipy)。该程序有两个参数,输入csv文件(假设是所有数字数据,例如没有标题字符串)和mat文件的输出文件名。加载mat文件时,可以通过matlab变量名csvmatrix访问其中的数据。

import csv  
import sys
import numpy
import scipy.io

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print "Usage: %s input.csv output.mat" % sys.argv[0]
        sys.exit(-1)

    data = [ ]
    with open(sys.argv[1]) as f:
        reader = csv.reader(f)
        for row in reader:
            rowData = [ float(elem) for elem in row ]
            data.append(rowData)

    matrix = numpy.array(data)
    scipy.io.savemat(sys.argv[2], {'csvmatrix':matrix})

答案 2 :(得分:0)

我几次遇到过这个问题。我做的可能很草率,但对我来说效果很好。我在电子表格(Excel或Calc)中打开文件,复制没有任何标题的内容并粘贴到文本编辑器中,我保存为.mat

(顺便说一下,在处理大文件时,Gedit和Notepad ++是我的首选编辑器)