首先是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。
BTW这是一个简化版本。实际问题有500个循环而不是2. A和B也复杂得多。
答案 0 :(得分:0)
您可以将其全部转储到CSV文件(以逗号分隔的值)。
只需在for循环中添加一个累积所有数据的文本变量,所以它看起来像这样:
(somecsvfile.csv的内容)
201205,weight,,,rank,sector,201205,
0.04 ,0.03 ,,, 1,S ,0.02
答案 1 :(得分: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行乘256列(请参阅excel specifications)。人们可以很容易地参与其中。