将MATLAB数据拉出到一个Excel电子表格

时间:2012-07-18 04:24:39

标签: excel matlab

首先是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的所有值都可以拉出到单个电子表格中,如下图所示?

enter image description here

诀窍是数据应该在电子表格的不同区域中拉出来用于不同的i。

BTW这是一个简化版本。实际问题有500个循环而不是2. A和B也复杂得多。

2 个答案:

答案 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)。人们可以很容易地参与其中。