He escrito una secuencia de comandos que guarda su salida en un archivo CSV para referencia posterior, pero la segunda secuencia de comandos para importar los datos requiere una cantidad de tiempo desgarbada para volver a leerla.La forma más rápida de importar archivos CSV en MATLAB
los datos están en el formato siguiente:
Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9
donde las cabeceras están en la columna más a la izquierda, y los valores de los datos ocupan el resto de la fila. Una dificultad importante es que las matrices de valores de datos pueden tener diferentes longitudes para cada elemento de prueba. Lo guardaría como una estructura, pero necesito poder editarlo fuera del entorno de MATLAB, ya que a veces tengo que eliminar filas de datos incorrectos en una computadora que no tiene instalado MATLAB. Entonces, la primera parte de mi pregunta es: ¿Debería guardar los datos en un formato diferente?
la segunda parte de la pregunta: ¿ He intentado importdata, csvread y dlmread, pero no estoy seguro de qué es lo mejor, o si hay una solución mejor. En este momento estoy usando mi propio script usando un loop y fgetl, que es terriblemente lento para archivos grandes. ¿Alguna sugerencia?
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);
(Sé que este código es probablemente terriblemente escrita - soy ingeniero, no un programador, por favor no me gritan -. Alguna sugerencia de mejora sería bienvenido, sin embargo)
+1 para recomendar strtok - No sabía que existía antes de – Doresoom