2

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

4

3 回答 3

2

您可以直接从 Web 获取数据,而无需使用 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);
于 2013-03-06T22:52:32.990 回答
0

你的问题就在这里:

Trouble reading number from file (row 1, field 1) ==> date-

Matlab 说它在第一个单元格中遇到了“日期-”。我猜你有一两行标题。您可以签入文件并调用

d = csvread('test.csv',ROW);

其中ROW是实际数据开始的行数(标题行数 + 1)。

于 2013-03-06T22:16:21.057 回答
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');

它应该工作。

于 2013-03-06T21:05:25.887 回答