Borrar filtros
Borrar filtros

Opening CSV file with numbers and strings

1 visualización (últimos 30 días)
V
V el 11 de Abr. de 2015
Comentada: V el 11 de Abr. de 2015
Hi, I am trying to open a csv file which has several columns of numbers. However, often there is a gap in one of the columns and the number gets replaced by "." .
I am trying to load the file into matlab, but if I use fopen followed by textscan, it stops reading on the first "." .
How can I load the csv file into a matlab matrix?
Thanks in advance,
  2 comentarios
dpb
dpb el 11 de Abr. de 2015
Post a (short) section of the file w/ the problem/symptom and show us what you tried, specifically...
V
V el 11 de Abr. de 2015
Editada: V el 11 de Abr. de 2015
The code I am using is:
PriceDataLoc = 'C:\123.csv';
PriceData_file = fopen(PriceDataLoc);
Prices1 = textscan(PriceData_file,'%f %f %f %f %f %f','delimiter',' ');
fclose(PriceData_file);
Prices1=[Prices1{:}]
I attach the csv file. A gap in the data is identified with ".". From that point on, the textscan does not read anything else.
Thanks!

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 11 de Abr. de 2015
Editada: Stephen23 el 11 de Abr. de 2015
This code reads the all eight lines of your sample file correctly, including those pesky missing data:
fid = fopen('123.csv','rt');
C = textscan(fid,'%f%f%f%f%f%f','TreatAsEmpty','.');
fclose(fid);
And we can check it in the command window:
>> cell2mat(C)
ans =
56266 1.99e+007 19 0 1 98793
56266 1.99e+007 18.75 -0.013158 1 98793
56266 1.99e+007 18.75 0 1 98793
56266 1.99e+007 18.5 -0.013333 1 98793
56266 1.99e+007 19.125 0.033784 1 98793
56266 1.99e+007 NaN -0.03268 1 98793
56266 1.99e+007 18.125 -0.02027 1 98793
56266 1.99e+007 18.125 0 1 98793
The textscan documentation has other useful options which might be of interest to you.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by