我正在尝试下载这个以逗号分隔的信息并将其保存,以便可以将其存储为可以访问的矩阵。到目前为止,我有代码,我认为应该将信息存储在名为test.csv的文件中,但我不确定:
>> urlwrite('http://xweb.geos.ed.ac.uk/~weather/jcmb_ws/JCMB_2013_Mar.csv','test.csv');
d = csvread('test.csv');
??? Error using ==> dlmread at 145
Mismatch between file and format string.
Trouble reading number from file (row 1, field 1) ==> date-
Error in ==> csvread at 50
m=dlmread(filename, ',', r, c);
我收到了上述错误。它使用urlread读取数据。有谁知道正确的语法应该是什么以及如何将其存储为矩阵?提前谢谢。
答案 0 :(得分:2)
您可以直接从网上获取数据,而无需使用URLREAD保存到文件:
webdata = urlread('http://xweb.geos.ed.ac.uk/~weather/jcmb_ws/JCMB_2013_Mar.csv');
这将为整个文件提供一个字符串,其中的行由'\ n'分隔。您可以通过多种方式处理它。例如:
tmp = textscan(webdata,['%s',repmat('%f',1,8)],'delimiter',',','headerlines',1);
date = tmp{1};
data = horzcat(tmp{2:end});
要获取列标题,例如:
colheader = textscan(webdata,'%s',1,'delimiter','\n');
colheader = regexp(colheader{:},',','split');
colheader = colheader{:};
您还可以将数据转换为结构:
Data = cell2struct(tmp, genvarname(colheader),2);
答案 1 :(得分:0)
尝试使用readtext.m。这是一个几乎可以读取任何文本文件的程序。您的数据中的问题可能是:它们没有统一的分隔符,即某个地方有两列由tab
分隔,某处为comma
。
可以像这样执行操作:
urlwrite('http://xweb.geos.ed.ac.uk/~weather/jcmb_ws/JCMB_2013_Mar.csv','test.csv');
data= readtext('test.csv');
它应该有用。
答案 2 :(得分:0)
你的问题就在这里:
Trouble reading number from file (row 1, field 1) ==> date-
Matlab说它在第一个单元格中遇到了“date-”。我猜你有一两排标题。您可以签入文件并致电
d = csvread('test.csv',ROW);
其中ROW
是实际数据开始的行数(标题行数+ 1)。