필터 지우기
필터 지우기

Export several arrays with the same name to a xls

조회 수: 3 (최근 30일)
lightworks
lightworks 2013년 6월 24일
Hi,
I have a lot of *.mat, each one containing 3 arrays of the same name, that is:
  • file1.mat contains arrays A1, A2 and A3
  • file2.mat contains arrays A1, A2 and A3 ... and so on.
I need to export them to a xls, like this:
  • Sheet 1 containing, side by side, all the arrays named by A1
  • Sheet 2 containing, side by side, all the arrays named by A2
  • Sheet 3 containing, side by side, all the arrays named by A3
I've been trying for hours now and I can't make it work (my problem is the repeated array's name).
I loaded all the files with this (I don't even know if it's the right way):
s = what('./matrices/Tmax/');
matfiles=s.mat;
for i=1:numel(matfiles);
x=load(['./matrices/Tmax/' char(matfiles(i))]);
...
end
I'd really appreciate any help. Thanks in advance!

채택된 답변

Leah
Leah 2013년 6월 24일
This will work up to the Z column in Excel (26 mat files) I don't know how many mat files you have.
mat_files=1:26; %number of mat files
excel_col=double('A'); %starting Excel Column
for m=mat_files
load(['file' num2str(m) '.mat']);
xlswrite('output.xls',A1,'A1',char(excel_col+m-1));
xlswrite('output.xls',A2,'A2',char(excel_col+m-1));
xlswrite('output.xls',A3,'A3',char(excel_col+m-1));
end
  댓글 수: 2
lightworks
lightworks 2013년 6월 24일
편집: lightworks 2013년 6월 24일
I think I didn't make myself clear.
The name of the *.mat files are not in a number sequence, they are just like: John.mat, Maria.mat, etc. So insted of loading with num2str I had to use the way I said in the first post.
So I tried out your code modified like this:
s = what('./');
matfiles=s.mat;
excel_col=double('A'); %starting Excel Column
for i=1:numel(matfiles);
load(['./' char(matfiles(i))]);
xlswrite('output.xls',A1,'A1',char(excel_col+i*7-1));
xlswrite('output.xls',A2,'A2',char(excel_col+i*7-1));
xlswrite('output.xls',A3,'A3',char(excel_col+i*7-1));
end
Where I also modified that the increment is i*7-1 insted of i-1. I did this because each of my arrays contains 7 columns (I don't know if it's the right thing to do).
But I get this error:
??? Error using ==> xlswrite at 213 Excel returned: Error: Object returned error code: 0x800A03EC.
Error in ==> test at 11 xlswrite('output.xls',A1,'A1',char(excel_col+i*7-1));
What did I messed up?
Thanks a lot for your help!
Leah
Leah 2013년 6월 24일
Your modification is correct and the code works for me. Must be something specific to your data. My dummy data is just a bunch of numbers. Check out this info for possible solutions to that error code.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Spreadsheets에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by