我编写了一个脚本,将其输出保存到 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);
(我知道这可能是写得很糟糕的代码——我是一名工程师,而不是程序员,请不要对我大喊大叫——不过,欢迎提出任何改进建议。)