フィルターのクリア

Opening CSV file with numbers and strings

2 ビュー (過去 30 日間)
V
V 2015 年 4 月 11 日
コメント済み: V 2015 年 4 月 11 日
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 日
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.
  1 件のコメント
V
V 2015 年 4 月 11 日
Thanks!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeText Files についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by