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