我的数据如下:
days of week date time(hrs) visitors
mon jan 2 2010 900 501
mon jan 2 2010 1000 449
mon jan 2 2010 1100 612
同样适用于全年的每一天。 我需要创建一个星期几的矩阵,如下所示:
A=[
mon
mon
mon
]
答案 0 :(得分:1)
以下是我将如何阅读制表符分隔值并解析日期:
%# read and parse file
fid = fopen('data.csv','rt');
C = textscan(fid, '%s %s %s %d', 'Delimiter','\t', 'HeaderLines',1, ...
'MultipleDelimsAsOne',true, 'CollectOutput',false);
fclose(fid);
%# get date and number of visitors
dt = datenum(strcat(C{2}, {' '}, C{3}), 'mmm dd yyyy HHMM');
visitors = C{4};
%# plot
plot(dt,visitors)
datetick('x')
xlabel('time of day'), ylabel('visitors')
至于星期几列,您可以将其命名为:
>> C{1} %# first column from file
ans =
'mon'
'mon'
'mon'
>> cellstr(datestr(dt,'ddd')) %# actual day of week from parsed dates
ans =
'Sat'
'Sat'
'Sat'
这会产生不同的日子(您的数据发布只是简单的,或者您在生成这些日期的部分中有错误!)
答案 1 :(得分:0)
从this previous question获取提示,
fid = fopen('filename.txt');
% Skip a line for the header
s = fgetl(fid);
% Read the rest into data
data = textscan(fid, '%s %s %d %d %d %d');
% Close the file
fclose(fid);
一周中的几天是data
的第一个单元格。
答案 2 :(得分:0)
您可以从文件交换中心下载我的csvimport提交内容。假设您的数据是制表符分隔的,您可以使用以下方式阅读:
[days datecol timecol visitors] = csvimport( 'file.txt', 'delimiter', '\t', ...
'columns', {'days of week', 'date', 'time(hrs)', 'visitors'} );
前两个输出参数是字符串的单元格数组,而后两个输出参数是双矩阵。
答案 3 :(得分:0)
如果您刚开始使用(最新版本的)matlab,最简单的方法是使用'导入向导'。
一些简单的步骤:
cell array
的选项(矢量或矩阵不起作用)。您可以选择单击导入旁边的,然后选择要为此过程生成代码。但是,这可能有点冗长。如果你只需要做一次,我会推荐这种方法。
答案 4 :(得分:-1)
您可以尝试使用dlmread
。它可以采用任何ASCII分隔符。我认为它可能符合您的要求。请参阅here。