将逗号分隔的.csv数据从Web源存储到matlab中的矩阵中

时间:2013-03-06 20:58:24

标签: matlab csv web store live

我正在尝试下载这个以逗号分隔的信息并将其保存,以便可以将其存储为可以访问的矩阵。到目前为止,我有代码,我认为应该将信息存储在名为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读取数据。有谁知道正确的语法应该是什么以及如何将其存储为矩阵?提前谢谢。

3 个答案:

答案 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)。