J'ai écrit un script qui enregistre sa sortie dans un fichier CSV pour référence ultérieure, mais le deuxième script d'importation de données prend beaucoup de temps pour le relire.Le moyen le plus rapide d'importer des fichiers CSV dans MATLAB
les données sont dans le format suivant:
Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9
où les en-têtes sont sur la gauche la plus colonne et les valeurs de données prennent le reste de la ligne. Une difficulté majeure est que les tableaux de valeurs de données peuvent avoir des longueurs différentes pour chaque élément de test. Je l'enregistrerais en tant que structure, mais je dois pouvoir le modifier en dehors de l'environnement MATLAB, car parfois je dois supprimer des lignes de mauvaises données sur un ordinateur sur lequel MATLAB n'est pas installé. Donc vraiment, la première partie de ma question est: Dois-je enregistrer les données dans un format différent?
Deuxième partie de la question: J'ai essayé importdata, csvread et dlmread, mais je ne suis pas sûr qui est le mieux, ou s'il y a une meilleure solution. En ce moment j'utilise mon propre script en utilisant une boucle et fgetl, ce qui est horriblement lent pour les gros fichiers. Aucune suggestion?
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);
(Je sais que ce code est probablement écrit terriblement - Je suis ingénieur, pas un programmeur, s'il vous plaît ne criez pas à moi -. Suggestions d'amélioration sont les bienvenues, cependant)
+1 pour recommander strtok - Je ne savais pas qu'il existait avant – Doresoom