0

まず、MATLAB コード (疑似コード) があります。

for i = 1:2
A(i) = [C(i);D(i)];
B(i) = [E(i);F(i)]; 
end

各ループの A と B の値は次のとおりです。

A(1) =     
'Rank'    'Ticker'    '201205'    'Weight'
[   1]    'B'         [ 0.04]     [       0.03]
[   2]    'E'         [ 0.01]     [       0.10]


A(2) =     
    'Rank'    'Ticker'    '201206'    'Weight'
    [   1]    'X'         [ 0.02]     [       0.07]
    [   2]    'Y'         [ 0.01]     [       0.11]


B(1) =     
'Rank'    'Sector'    '201205'    
[   1]    'S'         [ 0.02]    
[   2]    'A'         [ 0.01]   


B(2) =     
    'Rank'    'Sector'    '201206'  
    [   1]    'T'         [ 0.08]   
    [   2]    'Y'         [ 0.03]    

今私の質問に来ます。リンクに示されている次の図のように、各ループから生成された A と B のすべての値を単一のスプレッドシートに引き出すことができるように、ループにコードを追加するにはどうすればよいですか?

ここに画像の説明を入力

秘訣は、異なる i のスプレッドシートの異なる領域にデータを引き出す必要があることです。

ところで、これは簡略化されたバージョンです。実際の問題には、2 ではなく 500 のループがあります。A と B も同様にはるかに複雑です。

4

2 に答える 2

0

すべてをCSVファイル(カンマ区切り値)にダンプできます。

すべてのデータを蓄積するテキスト変数をforループに追加するだけで、次のようになります。

(somecsvfile.csvの内容)

201205,weight,,,rank,sector,201205,
0.04  ,0.03  ,,,   1,S     ,0.02
于 2012-07-18T05:55:33.637 に答える
0

私は通常、次のようにします。

table = {};
res_wid = 2;
res_height = 3;
dist = 2;
for i=1:10
    x_pos = (i-1)*(res_wid + dist)+ (1:res_wid);
    for j=1:10
        y_pos = (j-1)*(res_height + dist)+ (1:res_height);
        data = {
            'label 1','label 2'
            rand, rand
            rand, rand
            };
        table(y_pos,x_pos) = data;
    end
end

これらのファイルを作成する場合、Excel には愚かな制限があることに注意してください: 65,536 行 x 256 列 ( Excel の仕様を参照)。それらで簡単に実行できます。

于 2012-07-18T09:06:16.227 に答える