matlab读取excel数据.docx
- 文档编号:9448059
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:9
- 大小:19.40KB
matlab读取excel数据.docx
《matlab读取excel数据.docx》由会员分享,可在线阅读,更多相关《matlab读取excel数据.docx(9页珍藏版)》请在冰点文库上搜索。
matlab读取excel数据
matlab读取excel
office的表格文件也就是xls文件本质上就是一个二维矩阵,二维矩阵是用来保存数据的最佳方式,所以在日常工作中,我们从其它地方获取的数据通常都被保存为xls格式,但处理数据时,我们却需要把xls文件的数据导入到matlab里进行处理。
如果你只处理一个文件并且只做一次的话,你可以手动来拷贝粘贴,这花费不了你太多时间。
如果有很多xls文件,或者你的xls文件的内容可能随时被修改,那么下面的方法可以派上用场。
matlab自身提供了大量的函数,包括读取office文件。
其中xlsread与xlswrite就是专门用来读取xls文件里的数据的。
这两个函数的使用方法可以直接查看matlab自带的帮助。
xlsread对于纯数据的xls文件支持很完美,也就是说当xls文件里的每个格子都是“数”时,xlsread会直接返回一个实数矩阵。
但是通常我们拿到xls文件并不是这样,它的表头多半是描述性文字,它的数据也有可能是文字,有些位置的数据还有可能是缺失的。
xlsread对这样的文件读取无能为力,或者说需要大量的时间去协调数据的位置信息。
要是有一个函数,能够按照原有的顺序直接读取所有的单位格数据就好了。
当然,这时候返回的矩阵就不能是一个数值矩阵了,它将会是一个cell矩阵,里面的每个元素类型可能不一样。
matlab本身并不提供这个功能,但是另外有一个函数officedoc完美的实现这个功能。
这个函数包可以去OfficeDoc官方网站上去下载,解压缩后放到工作路径上即可。
使用方法可以查询helpofficedoc。
officedoc是收费函数包,但有免费版本,而且其免费版本可以实现上面我们所说的效果(收费版本主要是可以用来修改office文件)。
例子:
在matlab中读取xls格式的文件内容如应用如下函数:
1.bb=xlsread('c:
feature.xls','a0:
an40'),其中:
c:
feature.xls为文件存放的地址,a0:
a40为将要读取的单元格的范围.bb为读取的矩阵在MATLAB中的变量名.
2.使用m文件脚本如下:
Excel=actxserver('Excel.Application');
set(Excel,'Visible',1);
Workbooks=Excel.Workbooks;
Workbook=invoke(Workbooks,'Open',[cd,'\feature\ABC.xls']);
%% 读取ABC.xls:
sheet1 a1(即R1C1)~an40(即R240c40)范围内的 40by40 矩阵
read_excel=ddeinit('excel','ABC.xls:
sheet1');
feature1=ddereq(read_excel,'R1c1:
R40c40');
feature1
%% 关闭ABC.xls
invoke(Excel,'Quit');
delete(Excel);
注意:
在使用时将m文件与xls文件存于同一个目录下.另外:
sheet1:
可以重命名,且读取sheet的名称要与实际存放的名称相同.
matlab读取excel,txt文件函数
注意matlab不识别中文,读写的文件中最好不含有中文
excel读取函数xlsread
text 读取函数csvread
XLSREADGetdataandtextfromaspreadsheetinanExcelworkbook.
[NUMERIC,TXT,RAW]=XLSREAD(FILE)readsthedataspecifiedintheExcel
file,FILE.ThenumericcellsinreturnedinNUMERIC,thetext
cellsinreturnedinTXT,whiletheraw,unprocessedcell
contentisreturnedinRAW.
[NUMERIC,TXT,RAW]=XLSREAD()readsthedataspecified
inRANGEfromtheworksheetSHEET,intheExcelinFILE.
Itispossibletoselecttherangeofdatainteractively(seeExamples
below).PleasenotethatthefullfunctionalityofXLSREADdependson
theabilitytostartExcelasaCOMserverfromMATLAB.
[NUMERIC,TXT,RAW]=XLSREAD(,'basic')readsanXLS
above,usingbasicinputmode.ThisisthemodeusedonUNIXplatforms
aswellasonWindowswhenExcelisnotavailableasaCOMserver.
Inthismode,XLSREADdoesnotuseExcelasaCOMserver,whichlimits
importability.WithoutExcelasaCOMserver,RANGEwillbeignored
and,consequently,thewholeactiverangeofasheetwillbeimported.
Also,inbasicmode,SHEETiscase-sensitiveandmustbeastring.
[NUMERIC,TXT,RAW]=XLSREAD(,'',CUSTOMFUN)
[NUMERIC,TXT,RAW,CUSTOMOUTPUT]=XLSREAD(,'',CUSTOMFUN)
WhentheExcelCOMserverisused,allowspassinginahandletoa
customfunction. Thisfunctionwillbecalledjustbeforeretrieving
theactualdatafromExcel.ItmusttakeanExcelRangeobject(e.g.of
type'Interface.Microsoft_Excel_5.0_Object_Library.Range')asinput,
andreturnoneasoutput. Optionally,thiscustomfunctionmayreturn
asecondoutputargument,whichwillbereturnedfromXLSREADasthe
fourthoutputargument,CUSTOMOUTPUT. Fordetailsofwhatispossible
usingtheEXCELCOMinterface,pleaserefertoMicrosoftdocumentation.
INPUTPARAMETERS:
FILE:
stringdefiningthereadfrom.Defaultdirectoryispwd.
Defaultextensionis'xls'.
SHEET:
stringdefiningworksheetnameinworkbookFILE.
doublescalardefiningworksheetindexinworkbookFILE.See
NOTE1.
RANGE:
stringdefiningthedatarangeinaworksheet.SeeNOTE2.
MODE:
stringenforcingbasicimportmode.Validvalue='basic'. This
isthemodealwaysusedwhenCOMisnotavailable(e.g.onUnix).
RETURNPARAMETERS:
NUMERIC=nxmarrayoftypedouble.
TXT=rxscellstringarraycontainingtextcellsinRANGE.
RAW=vxwcellarraycontainingunprocessednumericandtextdata.
BothNUMERICandTXTaresubsetsofRAW.
EXAMPLES:
1.Defaultoperation:
NUMERIC=xlsread(FILE);
[NUMERIC,TXT]=xlsread(FILE);
[NUMERIC,TXT,RAW]=xlsread(FILE);
2.Getdatafromthedefaultregion:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet')
3.Getdatafromtheusedareainasheetotherthanthefirstsheet:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet','sheet2')
4.Getdatafromanamedsheet:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet','NBData')
5.Getdatafromaspecifiedregioninasheetotherthanthefirst
sheet:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet','sheet2','a2:
j5')
6.Getdatafromaspecifiedregioninanamedsheet:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet','NBData','a2:
j5')
7.Getdatafromaregioninasheetspecifiedbyindex:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet',2,'a2:
j5')
8.Interactiveregionselection:
NUMERIC=xlsread('c:
\matlab\work\myspreadsheet',-1);
Youhavetoselecttheactiveregionandtheactivesheetinthe
EXCELwindowthatwillcomeintofocus.ClickOKintheData
SelectionDialogwhenyouhavefinishedselectingtheactiveregion.
9.Usingthecustomfunction:
[NUMERIC,TXT,RAW,CUSTOMOUTPUT]=xlsread('equity.xls',...,@MyCustomFun)
WheretheCustomFunisdefinedas:
function[DataRange,customOutput]=MyCustomFun(DataRange)
DataRange.NumberFormat='Date';
customOutput='AnythingIwant';
Thiswillconverttodatesallcellswherethatispossible.
NOTE1:
Thefirstworksheetoftheworkbookisthedefaultsheet.If
SHEETis-1,Excelcomestotheforegroundtoenableinteractive
selection(optional).Ininteractivemode,adialoguewillprompt
youtoclicktheOKbuttoninthatdialoguetocontinueinMATLAB.
(OnlysupportedwhenExcelCOMserverisavailable.)
NOTE2:
Theregularformis:
'D2:
F3'toselectrectangularregionD2:
F3
inaworksheet.RANGEisnotcasesensitiveandusesExcelA1
notation(seeExcelHelp).(OnlysupportedwhenExcelCOMserver
isavailable.)
NOTE3:
Excelformatsotherthanthedefaultcanalsoberead.
(OnlysupportedwhenExcelCOMserverisavailable.)
Seealsoxlswrite,csvread,csvwrite,dlmread,dlmwrite,textscan.
ReferencepageinHelpbrowser
docxlsread
CSVREADRead
acommaseparatedvaluefile.
M=CSVREAD('')readsacommaseparatedvalueformattedfile
. TheresultisreturnedinM. Theonlycontain
numericvalues.
M=CSVREAD('',R,C)readsdatafromthecommaseparatedvalue
formattedatrowRandcolumnC. RandCarezero-
basedsothatR=0andC=0specifiesthefirstvalueinthefile.
M=CSVREAD('',R,C,RNG)readsonlytherangespecified
byRNG=[R1C1R2C2]where(R1,C1)istheupper-leftcornerof
thedatatobereadand(R2,C2)isthelower-rightcorner. RNG
canalsobespecifiedusingspreadsheetnotationasinRNG='A1..B7'.
CSVREADfillsemptydelimitedfieldswithzero. Datafileswhere
thelinesendwithacommawillproducearesultwithanextralast
columnfilledwithzeros.
Seealsocsvwrite,dlmread,dlmwrite,load,,textscan.
ReferencepageinHelpbrowser
doccsvread
Matlab如何读取Excel表格数据
Subject:
ArethereanyexamplesthatshowhowtousetheActiveXautomationinterfacetoconnectMATLABtoExcel?
ProblemDescription
IamtryingtocontrolExcelfromMATLABusingActiveX.ArethereanyexamplesthatshowhowtousetheActiveXautomationinterfacefromExceltodothis?
Solution:
MostofthefunctionalitythatyougetfromActiveXisdependentontheobjectmodel,whichtheexternalapplicationimplements.Consequently,weareusuallyunabletpprovidemuchinformationaboutthefunctionsthatyouneedtouseintheremoteapplicationtoperformaparticularfunction.Wedo,however,haveanexamplethatshowshowtodoperformcommonfunctionsinExcel.
WealsorecommendthatyoubecomemorefamiliarwiththeExcelobjectmodelinordertobetteruseExcel'sActiveXautomationinterfacefromMATLAB.Youcanfindmoreinformationonthisinterfacebyselectingthe"MicrosoftExcelVisualBasicReference"topicintheMicrosoftExcelHelpTopicdialog.ThistopicareacontainsasearchabledescriptionofExcelmethodsandproperties.
ThefollowingexampledemonstrateshowtoinsertMATLABdataintoExcel.ItalsoshowshowtoextractsomedatafromExcelintoMATLAB.Formoreinformation,refertotheindividualcommentsforeachcodesegment.
%OpenExcel,addworkbook,changeactiveworksheet,
%get/putarray,save,andclose
%FirstopenanExcelServer
Excel=actxserver('Excel.Application');
set(Excel,'Visible',1);
%Insertanewworkbook
Workbooks=Excel.Workbooks;
Workbook=invoke(Workbooks,'Add');
%Makethesecondsheetactive
Sheets=Excel.ActiveWorkBook.Sheets;
sheet2=get(Sheets,'Item',2);
invoke(sheet2,'Activate');
%Getahandletotheactivesheet
Activesheet=Excel.Activesheet;
%PutaMATLABarrayintoExcel
A=[12;34];
ActivesheetRange=get(Activesheet,'Range','A1:
B2');
set(ActivesheetRange,'Value',A);
%Getbackarange.Itwillbeacellarray,
%sincethecellrangecan
%containdifferenttypesofdata.
Range=get(Activesheet,'Range','A1:
B2');
B=Range.value;
%Converttoadoublematrix.Thecell
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 读取 excel 数据