matlab矩阵保存到表格,将matlab求出的矩阵保存在Excel表格中

该函数演示如何使用MATLAB的ActiveX接口将计算得到的矩阵保存到Excel文件中。通过调用`xlswrite`函数,可以创建Excel电子表格,并指定矩阵、表头和文件名。如果未提供文件名,内容将直接在Excel中打开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将matlab求出的矩阵保存在Excel表格中

转贴Genial分享程序

function xlswrite(m,header,colnames,filename);

%

xlswrite Easily create an Excel spreadsheet from MATLAB

%

% xlswrite(m,header,colnames,filename) creates a

Microsoft Excel

% spreadsheet using

% the MATLAB ActiveX interface. Microsoft Excel is required.

%

%Inputs:

% m Matrix to write to file

% (Optional):

% header String of header information.

% Use cell array for multiple lines

% DO NOT USE multiple row character arrays!!

% colnames (Cell array of

strings) Column headers.

% One cell element per column

% filename (string) Name of Excel

file. If not specified, contents will

% be opened in Excel.

%

% ex:

% m = rand(100,4);

% header = 'my data';

% %header{1} = 'first

line'; %This will give

% %header{2} = 'second

line'; % 2 header lines

% colnames =

{'Ch1','Ch2','Ch3','Ch4'};

%

% xlswrite(m,header,colnames,'myfile.xls');

% will save the spreadsheet as myfile.xls. The

user

% will never see Excel

% xlswrite(m,header,colnames);

% will open Excel with these contents in a new spreadsheet.

%

% Scott Hirsch

% The MathWorks

% This is provided free, no warranty, ...

% Copied from ActiveX example in documentation

[nr,nc] = size(m);

if nc>256

error('Matrix is too

large. Excel only supports 256 columns');

end;

% Open Excel, add workbook, change active worksheet,

% get/put array, save.

% First, open an Excel Server.

Excel = actxserver('Excel.Application');

%If the user does not specify a filename, we'll make Excel

visible

%If they do, we'll just save the file and quit Excel without ever

making

% it visible

if nargin<4

set(Excel, 'Visible',

1); %You might want to hide this if

% you autosave the file

end;

% Insert a new workbook.

Workbooks = Excel.Workbooks;

Workbook = invoke(Workbooks, 'Add');

% Make the first sheet active.

Sheets = Excel.ActiveWorkBook.Sheets;

sheet1 = get(Sheets, 'Item', 1);

invoke(sheet1, 'Activate');

% Get a handle to the active sheet.

Activesheet = Excel.Activesheet;

%Write header

if nargin<2 | isempty(header)

nhr=0;

elseif iscell(header)

nhr =

length(header); %Number header rows

for ii=1:nhr

ActivesheetRange = get(Activesheet,'Range',...

['A' num2str(ii)],['A' num2str(ii)]);

set(ActivesheetRange, 'Value', header{ii});

end;

else

nhr =

1; %Number header rows

ActivesheetRange =

get(Activesheet,'Range','A1','A1');

set(ActivesheetRange, 'Value',

header);

end;

�d column names

if nargin>2 &

~isempty(colnames)

nhr = nhr +

1; %One extra column name

ncolnames =

length(colnames);

for ii=1:ncolnames

colname = localComputLastCol('A',ii);

% cellname =

[char(double('A')+ii-1) num2str(nhr+1)];

cellname = [colname num2str(nhr)];

ActivesheetRange =

get(Activesheet,'Range',cellname,cellname);

set(ActivesheetRange, 'Value', colnames{ii});

end;

end;

% Put a MATLAB array into Excel.

FirstRow =

nhr+1; %You can change the first data row here.

% I start right after the headers

LastRow = FirstRow+nr-1;

FirstCol =

'A'; %You can change the first column here

LastCol = localComputLastCol(FirstCol,nc);

ActivesheetRange = get(Activesheet,'Range',...

[FirstCol num2str(FirstRow)],[LastCol num2str(LastRow)]);

set(ActivesheetRange, 'Value', m);

% If user specified a filename, save the file and quit

Excel

if nargin==4

invoke(Workbook, 'SaveAs',

[pwd filesep filename]);

invoke(Excel, 'Quit');

[pathstr,name,ext] =

fileparts(filename);

disp(['Excel file ' name '.xls

has been created.']);

end;

�lete the ActiveX object

delete(Excel)

function LastCol = localComputLastCol(FirstCol,nc);

% Comput the name of the last column where we will place data

%Input

% FirstCol (string) name of

first column

% nc total number of columns to write

%Excel's columns are named:

% A B C ... A AA AB AC AD .... BA BB BC ...

FirstColOffset = double(FirstCol) -

double('A'); %Offset from column A

if

nc<=26-FirstColOffset �sy if single letter

%Just convert to ASCII code,add the number of

needed columns,and convert back

%to a string

LastCol =

char(double(FirstCol)+nc-1);

else

ng =

ceil(nc/26); %Number of groups (of 26)

rm =

rem(nc,26)+FirstColOffset; %How many extra in this group beyond

A

LastColFirstLetter =

char(double('A') + ng-2);

LastColSecondLetter =

char(double('A') + rm-1);

LastCol = [LastColFirstLetter

LastColSecondLetter];

end;

使用方法:

>> m = rand(100,4);

>> header = 'my data';

>> colnames =

{'Ch1','Ch2','Ch3','Ch4'};

>> xlswrite(m,header,colnames,'myfile.xls');

Excel file myfile.xls has been created.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值