2

私のデータは次の形式です:

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
]
4

5 に答える 5

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'

これにより、異なる日が生成されます (投稿されたデータが単にでっちあげであったか、それらの日付を生成した部分にバグがあります!)

于 2011-07-20T13:16:22.077 に答える
0

この前の質問からプロンプトを取得して、

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ます。

于 2011-07-20T10:39:57.927 に答える
0

File Exchange から私のcsvimport 送信をダウンロードできます。データがタブで区切られていると仮定すると、次を使用して読み取ることができます。

[days datecol timecol visitors] = csvimport( 'file.txt', 'delimiter', '\t', ...
       'columns', {'days of week', 'date', 'time(hrs)', 'visitors'} );

最初の 2 つの出力パラメーターは文字列のセル配列になり、最後の 2 つは倍精度行列になります。

于 2011-07-20T17:36:15.473 に答える
-1

を使用してみてくださいdlmread。任意の ASCII 区切り文字を使用できます。あなたの要件に合うかもしれないと思います。ここを参照してください。

于 2011-07-21T13:40:06.943 に答える