Le moyen le plus rapide pour importer des fichiers CSV dans MATLAB

J'ai écrit un script qui enregistre sa sortie dans un fichier CSV pour référence ultérieure, mais le second script pour importer les données prend une déhanchée quantité de temps pour le lire à nouveau.

Les données dans le format suivant:

Item1,val1,val2,val3
Item2,val4,val5,val6,val7
Item3,val8,val9

où les en-têtes sont sur la colonne la plus à gauche, et les valeurs de données de prendre le reste de la ligne. Une difficulté majeure est que les tableaux de valeurs de données peuvent être de longueurs différentes pour chaque élément de test. J'avais l'enregistrer en tant que structure, mais j'ai besoin d'être en mesure de le modifier à l'extérieur de l'environnement, étant donné que parfois, je dois supprimer des lignes de mauvaises données sur un ordinateur qui n'a pas de MATLAB installé. Alors, 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 de qui est le meilleur, ou si il y a une meilleure solution. Actuellement, j'utilise mon propre script à l'aide d'une boucle et fgetl, qui est horriblement lent pour les gros fichiers. Des suggestions?

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 c'est probablement terriblement code écrit - je suis un ingénieur, pas un programmeur, merci de ne pas me crier après - toute suggestion d'amélioration serait la bienvenue, si.)

InformationsquelleAutor Doresoom | 2010-01-11