2016-11-11 137 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秒的执行。所以这是一个显著的差异。