2012-05-21 2 views
1

Мой необработанный файл CSV выглядит как 1-й рис. И я хочу использовать Matlab, чтобы прочитать его в формате как 2-й рис. У меня более 1000 одинаковых файлов CSV, это будет болезненно, если я сделаю это путем копирования/вставки. Как я могу это сделать? Любые примеры?Чтение сложного формата CSV fileinto Matlab

исходные данные: Raw Data

Выходные данные: Output Data

ответ

0

Первое, что нужно понимать, что .csv файл имеет очень простой формат. Ваш выше файл на самом деле это обычный текстовый файл со следующим текстом на каждой строке:

id,A001 
height 
a1,a2,a3 
3,4,5 
3,4,5 
6,7,5 

weight 
a1,a2,a3 
4,4,5 
5,4,6 
i6,7,5 

Так что не все, что трудно для вас, чтобы написать свой собственный парсер в Matlab. Вы хотите использовать такие команды, как

fid = fopen('filename.csv','r'); 
L = fgetl(fid); % get a text line from the file 
commas = find(L==','); % find where the commas are in the line 
n1 = str2num(L(1:commas(1)-1); % convert the first comma-delimited number on line L 
fidout - fopen('myfile.csv','w'); 
Lout = [ L(commas(2)+1:commas(3)-1) ', a1, a1']; 
fwrite(fidout,Lout); % write a line out to the output file 
fclose all; % close all open files. 

Это будет казаться медленным при первом чтении различных значений в различные переменных, а затем, расположив их писать так, как вы хотите их выписали в свой выходной файл. Но как только вы начнете кататься, он пойдет довольно быстро, и вы обнаружите, что имеете довольно хорошее представление о том, что есть в файлах, и вы будете знать из первых рук, что связано с написанием чего-то вроде texscan.m или csvwrite.m и так далее.

Удачи вам!

Смежные вопросы