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

Optimization 将CSV保存到.MAT或二进制文件,optimization,csv,converter,octave,Optimization,Csv,Converter,Octave,我正在处理倍频程,有一个~80MB.csv文件要加载 csvread()需要很长时间才能加载 如何将csv文件保存到.mat文件或二进制文件,或者至少加速倍频程csvread() 提前谢谢你 如果您也在使用r,您可以执行以下操作: 使用R中的“read.csv”读取文件 使用R包“R.matlab”编写一个“.mat”文件 现在您可以以八度音阶“更快”加载.mat文件,但步骤1(“读取csv”)也可能非常慢 这是一个python版本(使用numpy和scipy)。该程序采用两个参数,输入csv文

我正在处理倍频程,有一个~80MB.csv文件要加载

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

如何将csv文件保存到.mat文件或二进制文件,或者至少加速倍频程csvread()


提前谢谢你

如果您也在使用r,您可以执行以下操作:

  • 使用R中的“read.csv”读取文件
  • 使用R包“R.matlab”编写一个“.mat”文件
  • 现在您可以以八度音阶“更快”加载.mat文件,但步骤1(“读取csv”)也可能非常慢

    这是一个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})
    

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

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