Export martrix to excel in Loop

2 ビュー (過去 30 日間)
Isay
Isay 2014 年 11 月 22 日
コメント済み: Image Analyst 2014 年 11 月 27 日
I have a FOR loop in my code and need to save Result ( vertcat of A and B ) in ONE Excel file in new Row(every columns are same) ,but MATLAB save them (each step) in new Excell file !
for Example:
for i=1:5
A=ones(2,5);
B=zeros(3,5);
xlswrite('testdata.xls',[A;B]);
i=i+1;
end
can you help me
  6 件のコメント
dpb
dpb 2014 年 11 月 23 日
編集済み: dpb 2014 年 11 月 23 日
Just because the limitations on the number of rows or columns is greater than the limit, that doesn't necessarily mean Excel has any more system memory than does Matlab...I'd guess 48GB is likely going to bring it to its knees as well...or even if not if it actually will try to page, virtual memory paging will kill you. I don't really think Excel is any "more smarter" than Matlab will be on handling this much data. I don't have 64-bit OS so can't really test it, but just sayin'...
Isay
Isay 2014 年 11 月 24 日
please forget 1million Row and other things, and look at my message: i need to Edit " xlswrite('testdata.xls',[A;B]);" to vaertcat A and B UNDER each other in each STEP of Loop. IN ONE EXCEL FILE Just it !
can you Edit for me ?

サインインしてコメントする。

採用された回答

Image Analyst
Image Analyst 2014 年 11 月 23 日
If you can't fit the 1,000,000 x 6,000 array (48 GB) in memory, then you have to use ActiveX to send it to Excel. See attached demo.
  6 件のコメント
Isay
Isay 2014 年 11 月 24 日
thanks, But your code Add sheet in each step of (For) loop. I need all of them in ONE Sheet.
Image Analyst
Image Analyst 2014 年 11 月 27 日
Isay, I don't know why it does that - according to the help it should not. But try this - it works:
delete('testdata.xls'); % Delete any prior file.
for i=1:5
A=ones(2,5);
B=zeros(3,5);
numberOfRows = size(A, 1) + size(B, 1);
thisRow = (i-1)*numberOfRows + 1
cellReference = sprintf('A%d:E%d', thisRow, thisRow + numberOfRows-1)
xlswrite('testdata.xls',[A;B], cellReference);
end

サインインしてコメントする。

その他の回答 (1 件)

Moh
Moh 2014 年 11 月 27 日
try
idx = 0;
for i=1:5
A=ones(2,5);
B=zeros(3,5);
[C,D]=size([A;B]);
xlswrite('testdata.xls',[A;B],1,strcat('A',num2str(1+idx)));
idx = idx+C;
end

カテゴリ

Help Center および File ExchangeActiveX についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by