2012-07-18 40 views
0

首先有一個MATLAB代碼(僞碼):拉出式MATLAB數據到一個Excel電子表格

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

訣竅就是數據應以電子表格的不同區域不同的我拉出。

順便說一句,這是一個簡化版本。實際的問題有500個循環而不是2. A和B也更復雜。

+0

請參考這些線程, http://stackoverflow.com/questions/5244440/export-several-matrices-to-excel-in-matlab http://stackoverflow.com/問題/ 8676763 /如何將輸出數據從matlab轉換爲excel for a-loop – user1532230 2012-07-18 17:15:04

回答

0

您可以將其全部轉儲爲CSV文件(逗號分隔值)。

只需添加到您的for循環文本變量,其累積的所有數據,所以它會是這個樣子:

(somecsvfile.csv的內容)

201205,weight,,,rank,sector,201205, 
0.04 ,0.03 ,,, 1,S  ,0.02 
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)。人們可以很容易地運行在那些。

+0

感謝您及時回覆並警告有關Excel的限制。但是,我想知道這個代碼如何將MATLAB矩陣中的數據導出到電子表格中? – user1532230 2012-07-18 13:13:33

+0

你知道你可以用xlswrite寫一個電子表格嗎? – bdecaf 2012-07-19 12:58:44

相關問題