2016-11-11 81 views
0

我有一個Matlab腳本輸出的多維數組LCOE(3維)的大小爲16:12:34。這需要將輸出寫入到Excel中,所以我用xlswrite。matlab多維數組excel

我已經試過這樣:

T = LCOE(:,:,1); 
xlswrite('filename', T, 'sheetname', 'B2'); 

該做的事情是應該的,但只寫一個表到Excel,我想寫出所有34桌脫穎而出對方,用'2間隔下方空行。

然後,我嘗試這樣做:

for y = 1:34 
    T = LCOE(:,:,y) 
    xlswrite('filename', T, 'sheetname', strcat('B', num2str(2+(y-1)*18))); 

這工作,但速度很慢,因爲MATLAB寫的每個表分別到Excel。有沒有更快的方法來做到這一點?

回答

0

而不是一次又一次地使用xlswrite。將3D矩陣的所有值轉儲到2D矩陣中,並添加NaN s的行,以便當您將其寫入excel文件時,會得到2個空白行。

下面的代碼由10餘

LCOE = 100*rand(16,12,34); % Taking random values for LCOE 
T = NaN(18*34-2 ,12);  % 1. Pre-allocation 2. 16+2 = 18 

% Following loop dumps all the values of 3D matrix into a 2-D followed by 2 rows of NaN 
% to leave 2 blank rows in excel file. 
for k = 1:34 
    T(18*(k-1)+[1:16], :) = LCOE(:,:,k); 
end 
xlswrite('filename', T, 'sheetname', 'B2'); % Writing the Excel file 

因素提高了執行時間在我的系統,我的代碼需要1秒左右,而你的代碼需要約10.5秒的執行。所以這是一個顯著的差異。