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 提取。

顺便说一句,这是一个简化版本。实际问题有 500 个循环而不是 2 个。A 和 B 也更复杂。

4

2 回答 2

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 回答
0

您可以将其全部转储到 CSV 文件(逗号分隔值)。

只需将一个文本变量添加到您的 for 循环中,该变量会累积所有数据,因此它看起来像这样:

(somecsvfile.csv 的内容)

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