Я написал сценарий, который сохраняет выходные данные в 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);
(Я знаю, что это, вероятно, ужасно написанный код - я инженер, а не программист, пожалуйста, не кричите на меня - однако любые предложения по улучшению будут приветствоваться.)