Borrar filtros
Borrar filtros

How do I import CSV files using csvread?

12 visualizaciones (últimos 30 días)
Franchesca
Franchesca el 10 de Mayo de 2014
Comentada: dpb el 16 de Mayo de 2014
I cannot seem to import the multiple CSV files the code I am using is below:
%% Import data
numfiles = 54; % number of CSV files mydata=cell(numfiles,1); % defining size of mydata
for i=7:length(mydata) % loop to import mutliple CSV files
myfilename = sprintf('Trial%d.csv', i); % define file name
mydata{i} = csvread(myfilename); % import files into mydata
end

Respuesta aceptada

dpb
dpb el 10 de Mayo de 2014
Looks like should work presuming your filenames are ok but I'd do it slightly differently.
Try sotoo...
d=dir('*.csv'); % return the list of csv files
for i=1:length(d)
m{i}=csvread(d(i).name); % put into cell array
end
Worked here for a few in my working directory.
Note that the files need to be consistent with what content csvread can handle which is numeric array data only.
What specific problem did you encounter?
  1 comentario
Franchesca
Franchesca el 11 de Mayo de 2014
It still doesn't seem to work I receive the following error:
Error using dlmread (line 139) Mismatch between file and format string. Trouble reading number from file (row 1u, field 1u) ==> Devices\n
Error in csvread (line 48) m=dlmread(filename, ',', r, c);
Error in saveee (line 13) m{i}=csvread(d(i).name); % put into cell array
This is a preview of the data I am using:

Iniciar sesión para comentar.

Más respuestas (3)

dpb
dpb el 11 de Mayo de 2014
Editada: dpb el 16 de Mayo de 2014
As the doc says,
...All data in the input file must be numeric. dlmread does not operate on files containing nonnumeric data, even if the specified rows and columns for the read contain numeric data only.
As you can tell, csvread has the same limitation since it's a wrapper around dlmread
Also the error shows you it's the first line in the file containing the string 'Devices\n' that it barfed over.
Use textscan or textread or importdata instead...
ADDENDUM
Or, if you're adamant about using csvread, save the data w/o the header information into another file and process that one.
One additional alternative would be to read (I presume there is one) the .xls file directly w/ xlsread which will give the text into as well as the data.
ADDENDUM 2
If all you need is the array of data of the five columns, my preferred approach (being a traditionalist/minimalist in not using cell arrays where aren't needed) would be
d=dir('*.csv'); % return the list of csv files
for i=1:length(d)
m{i}=textread(d(i).name,'','headerlines',5); % put into cell array
end
The above presumes the format of each is identical in having precisely five header lines preceding the data array.
  2 comentarios
BOB
BOB el 14 de Mayo de 2014
when I try this I get these errors:
Error using dataread Number of outputs must match the number of unskipped input fields.
Error in textread (line 175) [varargout{1:nlhs}]=dataread('file',varargin{:}); %#ok<REMFF1>
dpb
dpb el 14 de Mayo de 2014
Need to see the command precisely as used and a snippet of the file...

Iniciar sesión para comentar.


BOB
BOB el 16 de Mayo de 2014

dpb
dpb el 16 de Mayo de 2014
m{i}=textread(d(i).name,'','headerlines',5);
Gotta' have an empty format field for textread to not need multiple outputs. Looks like I typed from keyboard instead of cut 'n paste myself and missed that I missed it...
  4 comentarios
BOB
BOB el 16 de Mayo de 2014
what line?
dpb
dpb el 16 de Mayo de 2014
The error data line seems to not have the first column '1' in it for some reason...

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by