Opening CSV file with numbers and strings

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 件のコメント

dpb
dpb 2015 年 4 月 11 日
Post a (short) section of the file w/ the problem/symptom and show us what you tried, specifically...
V
V 2015 年 4 月 11 日
編集済み: V 2015 年 4 月 11 日
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!

サインインしてコメントする。

 採用された回答

Stephen23
Stephen23 2015 年 4 月 11 日
編集済み: Stephen23 2015 年 4 月 11 日

1 投票

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.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

タグ

質問済み:

V
V
2015 年 4 月 11 日

コメント済み:

V
V
2015 年 4 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by