我已经编写了一个脚本,将其输出保存为CSV文件供以后参考,但用于导入数据的第二个脚本只需要很长时间就可以读取。在MATLAB中导入CSV文件的最快方法
的数据是以下格式:
Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9
其中标头是在最左边的列中,并且所述数据值占用的行的其余部分。一个主要困难是对于每个测试项目,数据值的数组可以是不同的长度。我将它保存为一个结构体,但我需要能够在MATLAB环境之外进行编辑,因为有时我必须删除没有安装MATLAB的计算机上的坏数据行。所以真的,我的问题的第一部分是:我应该以另一种格式保存数据吗?问题的
第二部分: 我试过importdata,csvread和dlmread,但我不知道这是最好的,或者如果有一个更好的解决方案。现在我正在使用我自己的脚本,使用循环和fgetl,这对于大文件来说非常慢。有什么建议么?
function [data,headers]=csvreader(filename); %V1_1
fid=fopen(filename,'r');
data={};
headers={};
count=1;
while 1
textline=fgetl(fid);
if ~ischar(textline), break, end
nextchar=textline(1);
idx=1;
while nextchar~=','
headers{count}(idx)=textline(1);
idx=idx+1;
textline(1)=[];
nextchar=textline(1);
end
textline(1)=[];
data{count}=str2num(textline);
count=count+1;
end
fclose(fid);
(我知道这可能是非常编写的代码 - 我是工程师,不是程序员,请不要对我大喊大叫 - 改进建议将受到欢迎,虽然)
+1推荐strtok - 我不知道它存在之前 – Doresoom 2010-01-11 19:44:51