4

次の構造のオプション データを含む大きな csv ファイル (約 100 万行) があります (内容は変更されています)。

secid, date, days, delta, impl_volatility, impl_strike, impl_premium, dispersion, cp_flag, ticker, index_flag, industry_group
100000, 02/05/1986, 60, -80, 0.270556, 74.2511, 5.2415, 0.021514, C, ASC, 0, 481
100000, 03/05/1986, 30, -40, 0.251556, 74.2571, 6.2415, 0.025524, P, ASC, 0, 481

以下を使用して、テストファイルを正常にインポートしました。

ftest = fopen('test.csv');
C = textscan(ftest,'%f %s %f %f %f %f %f %f %s %s %f %f','Headerlines',1,'Delimiter',',');
fclose(ftest);

ただし、C はセル配列であるため、matlab でファイルの内容を処理するのが難しくなります。「通常の」配列として持つ方が簡単です(正しい命名法がわからないことを許してください。私はmatlabで作業を始めたばかりです)。

C を出力すると、次のようになります。

Columns 1 through 6
[2x1 double]    {2x1 cell}    [2x1 double]    [2x1 double]    [2x1 double]    [2x1 double]
Columns 7 through 12
[2x1 double]    [2x1 double]    {2x1 cell}    {2x1 cell}    [2x1 double]    [2x1 double]

したがって、C であるセル配列の内部には、配列とセル配列 (数値の配列と文字列のセル配列) があります。要素 (1,2) をチェックするには C{1}(2) を使用する必要がありますが、要素 (2,2) をチェックするには C{2}{2} を使用する必要があります。理想的には、C(1,2) と C(2,2) の両方としてアクセスしたいと考えています。問題は、これをどのように行うかです。

私は解決策を検索してcells2matを見つけましたが、すべてのコンテンツが数値である場合にのみ機能します(私は思う)。私はこの解決策を見つけました:セル配列のセル配列を行列の行列に変換しますが、horzcat はエラーを取得します。これは、同じ問題が原因で発生する可能性があると考えられます。

よろしくお願いいたします。

4

2 に答える 2