3

CSV ファイルを MATLAB にインポートするにはどうすればよいですか? 私が作業しているファイルの行は次のようになります。

SUNW,2-Jan-98,1998,5,40.125,41.5

36 列と 10107 行があります。最初の行には、列ヘッダーが含まれています。MATLAB は、この種の CSV ファイルのインポートをサポートしていないようです。次のtextscan関数を使用すると、データ全体が 1 つの cell 配列に読み込まれます。

data = textscan(fid, '%s %s %d %d %f %f', ...
    'HeaderLines',1, 'Delimiter',',', 'CollectOutput',1);

データを列ごとに異なる変数に読み込む方法はありますか?

4

2 に答える 2

2

textscanドキュメントの例 6 は、関心のあるユース ケースをカバーしているようです。

テキスト エディターを使用して、次の行を含むコンマ区切りファイル data2.csv を作成します。

    abc, 2, NA, 3, 4
    // Comment Here
    def, na, 5, 6, 7

textscan がコメントまたは空の値として扱う入力を指定します。

    fid = fopen('data2.csv');
    C = textscan(fid, '%s %n %n %n %n', 'delimiter', ',', ...
                 'treatAsEmpty', {'NA', 'na'}, ...
                 'commentStyle', '//');
    fclose(fid);

textscan は、次のセルを含む 1 行 5 列の cell 配列 C を返します。

    C{1} = {'abc'; 'def'}
    C{2} = [2; NaN]
    C{3} = [NaN; 5]
    C{4} = [3; 6]
    C{5} = [4; 7]

各列を個別の変数に明示的に割り当てるわけではありませんが、簡単に次のようなことができますcol1 = C{1};

于 2012-01-22T08:03:27.310 に答える
1

MATLAB 2011b をお持ちの場合は、スプレッドシート インポート ツールを使用できます。

于 2012-01-22T13:00:10.363 に答える