2.1 数据交互函数

2.1 数据交互函数

2.1.1 获取文件信息xlsfinfo函数

在读取Excel目标数据文件前,可以通过xlsfmfo函数获取该文件的相关信息,为MATLAB函数的后续操作提供有效信息(如文件类型、文件内部结构、相关的软件版本等)。

xlsfinfo函数语法:

[typ, desc, fmt]=xlsfinfo(filename)

输入参数filename目标文件地址(若文件在MATLAB当前的工作目录中,则filename为“文件名”:如果文件不在MATLAB当前的工作目录中,则filename为“文件路径\文件名”, 例如“E:\other\案例书籍\abC.xls”)。

输出参数如下。

● typ:目标文件类型。

● desc:目标文件内部表名称(sheetname)。

● fmt:支持目标文件的软件版本。

【例2-1】测试函数M文件CaseXlsfinfo.m

结果输出:

注:由于MATLAB 2009a与Excel 2007数据交互时,每次使用xls类函数都会重新开启一个Excel进程,若反复使用xls类函数则会导致系统中多个Excel进程并存,消耗系统资源,导致系统运行速度下降,故作者使用system('taskkill/F/IM EXCEL.EXE')调用Windows的taskkill函数关闭刚使用的Excel进程。在2011以后的版本中,经测试,上述问题已不存在。

2.1.2 读取数据xlsread函数

MATLAB从Excel中读取数据的函数为xIsread,xlsread函数是使用频率较高的函数之一。xlsread函数语法如下:

1. [data, textdate]=xlsread(filename)

输入参数Filename为目标文件地址(若文件在MATLAB当前的工作目录中,Filename为“文件名”,如果文件不在MATLAB当前的工作目录中,则lename为“文件路径\文件名”)。

输出参数如下。

● Data:数值数据。

● Textdate:文字数据。

目标文件Excel的内容如表2-1所示。

     

【例2-2】测试函数M文件CaseXlsRead.m,测试Exce1.xls文件内容如表2-1所示。

2. data=xlsread(filename.sheet, range)

输入参数如下。

●  Filename:门标文件地址(若文件在MATLAB当前的工作目录中,Filename为“文件名”,如果文件不在MATLAB当前的工作目录中,Filename为“文件路径\文件名")。

●  Sheet:数据表名称,例如Exccl默认表名称shcet1。

●  Range:数据所在位置,例如AI:B13。

输出参数为Data:数值数据。

【例2-3】测试函数M文件CaseXIsRead.m。

注:data=xlsread(filename,sheet,range)形式的xlsread函数无法读取指定单元格中的非数值内容。若Excel中的两列数据一列偏大、一列偏小,按[data,textdate]=xlsread(filename)方法导入后,偏大的用科学计数法表示,偏小的就变成了0.0000。建议在读取前将Excel中的数值格式修改为普通格式。

2.1.3 写入数据xlswrite函数

MATLAB往Excel中写入数据的函数为xlswrite 。

xlswrite函数语法:

[status,message]=xlswrite(filename,M,sheet,range)

输入参数如下。

● Filename:目标文件地址(若文件在MATLAB当前的工作目录中,Filename 为“文件名”,如果文件不在MATLAB当前的工作日录中,filename为“文件路径\文件名”)。

● M:写入Excel中的数据,M存储数据的变量名称。

● Sheet:写入Excel中的sheet名称(可选,若空默认为sheet1).

● Range:写入Excel中的单元格区域(可选,若空默认“AI”)输出参数如下。

● status:写入状态,“1”表示写入成功,“0”表示写入失败。

● message:若失败,则显现失败信息。

表示目标文件被锁定无法写入(目标文件被其他程序占用时,系统会锁定目标文件),解决方法是关闭Excel程序。若还出现上述问题,则可在任务管理器中结束ExceI进程。

【例2-4】测试函数M文件CaseXlsWrite.m。

结果输出:

如果写入的是字符,则使用'aa'与{'aa'}的效果完全不同,'aa'得到的结果是ExceI的两个单元格都是'a',{'aa'}得到的结果是ExceI的一个单元格是'aa'。

2.1.4 交互界面uümport函数

新版的MATLAB提供了界面化的数据交互功能。Uiimport函数的语法如下:

1. uiimport

在命令窗口输入uiimport命令,出现文件选择窗口。

2. uiimport(filename)

在命令窗口输入uiimport(filename),表示打开数据文件filename。

3. uiimport('-file')

在命令窗口输入uiimport('-file'),表示在当前文件夹内选择数据文件。

4. uiimport('-pastespecial')

在命令窗口输入uiimport('-pastespecial'),表示打开当前剪贴板中的数据。

5. S=uiimport(…)

表示将数据文件按结构存储在S中。

【例2-5】函数uiimport测试。

运行结果如图2-1所示。

具体操作步骤如下:

Step 01回选择要打开的数据文件funddata.xls,如图2-2所示。

Step 02单击“打开”按钮,MATLAB将会读取数据,如图2-3所示。