Matlab与excel、txt的交互
一、Matlab与Excel的交互
1、引述:
数学建模题目常会将数据以附件形式存放在Excel表格中。Excel自带了许多实用、便捷的数据处理功能,掌握这些技巧,往往足以进行数据的初步分析。但在需要进行模拟仿真等进一步操作的时候,需要将数据以矩阵形式导入Matlab中进行操作。因此熟练掌握Matlab与Excel的交互是程序员的一个不可缺少的基本技能。
2、读取Excel中的数据——xlsread
Matlab自带帮助文档中xlsread函数的介绍与用法:
xlsread - Read Microsoft Excel spreadsheet file
This MATLAB function reads data from the first worksheet in the Microsoft Excel
spreadsheet file named filename and returns the numeric data in array num.
num = xlsread(filename)
num = xlsread(filename,sheet)
num = xlsread(filename,xlRange)
num = xlsread(filename,sheet,xlRange)
num = xlsread(filename,sheet,xlRange,'basic')
[num,txt,raw] = xlsread(___)
___ = xlsread(filename,-1)
[num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',functionHandle)
以其中比较常用的一个用法举例:
num = xlsread(filename,sheet,xlRange)
其中,num用于存放读取到Matlab中的内容。
filename为所需读取的文件名,sheet为Excel中的sheet名, range为Excel表格中读取范围
注意:若待读取Excel不与该.m文件在同一级目录下,则filename变量须标出Excel文件路径名,如’E:\ 1.xlsx’
若待读取Excel与该.m文件在同一级目录下,则filename变量可不标注excel文件路径,如’1.xlsx’
推荐将.m文件与Excel文件放至同一目录下并省略路径名,代码更简单且在明确标注路径名时,在他人电脑上运行文件路径易改变,从而报错。
实际代码举例:
>> data=xlsread('1.xlsx',‘sheet1’,'B2:G21')
该语句将matlab包含目录下的‘1.xlsx’表格中sheet1的B2:G21的部分读入了matlab里的data变量中。
MATLAB读取sheet1中的数据
[num,txt,raw]=xlsread('C:\Users\Administrator\Desktop\test\a.xls')
%num返回的是excel中的数据,txt输出的是文本内容,row输出的是未处理数据
%一般情况下,我们读取的是excel中的数剧,所以可以直接用下面的,只输出数据矩阵便可
[num]=xlsread('C:\Users\Administrator\Desktop\test\a.xls')
读取指定sheet中的数据
如果想读取excel中的第二个sheet中的数据,可以输入下面命令
[num]=xlsread('C:\Users\Administrator\Desktop\test\a.xls',2)
读取指定单元格中的数据
[num]=xlsread('C:\Users\Administrator\Desktop\test\a.xls',2,'A2:C5')
3、将数据写入Excel——xlswrite
Matlab自带帮助文档中xlsread函数的介绍与用法:
xlswrite - Write Microsoft Excel spreadsheet file
This MATLAB function writes array A to the first worksheet in Excel file,
filename, starting at cell A1.
xlswrite(filename,A)
xlswrite(filename,A,sheet)
xlswrite(filename,A,xlRange)
xlswrite(filename,A,sheet,xlRange)
status = xlswrite(___)
[status,message] = xlswrite(___)
以其中比较常用的一个用法举例:
xlswrite(filename,A,sheet,xlRange)
A为待读入数据,其他变量含义与上文介绍的xlsread函数用法例子相同。当所在目录下无法找到该filename的文件时,会自动生成一个以该文件名命名的文件。
实际代码举例:
>> xlswrite('2.xlsx',data,‘sheet1’,'A1:F20')
假设data变量为Matlab中存储了数据的变量,则该代码将data变量中的20行6列的数据存储到了2.xlsx中sheet1里的A1:F20区域。
二、Matlab与txt文档的交互
1、引述:
数学建模题目偶尔也会将数据以附件形式存放在txt格式的文档中。txt文档并没有自带的便捷函数,此时一个比较方便的数据处理方法便是将txt文档数据读入matlab中进行处理。
2、从文本文档读入数据的函数——load和textread
(1)Matlab自带帮助文档中load函数的介绍与用法:
load - Load variables from file into workspace
This MATLAB function loads data from filename.
load(filename)
load(filename,variables)
load(filename,'-ascii')
load(filename,'-mat')
load(filename,'-mat',variables)
S = load(___)
load filename
以其中比较常用的一个用法举例:
M=load(filename);
filename为文本文档的文件名,如’mydata.txt’
实际代码举例:
>> M=load('1.txt');
此代码将1.txt文件中数据读入Matlab并存储在变量M中。
(2)Matlab自带帮助文档中textread函数的介绍与用法:
textread - Read data from text file; write to multiple outputs
This MATLAB function reads data from the file filename into the variables A,B,C,
and so on, using the specified format, until the entire file is read.
[A,B,C,...] = textread(filename,format)
[A,B,C,...] = textread(filename,format,N)
[...] = textread(...,param,value,...)
以其中比较常用的一个用法举例:
[data1,data2,data i…]=txtread(filename,’format’,N)
data i存储.txt文件中的第i列数据;format为每列各个数据格式(如%d,%f,%s等,用法同c语言格式化输入输出);N为读取的行数;
若.txt文件前N行为不需要的其他类型数据,可用
[data1,data2,datai…]=txtread(filename,’format’, ’headerlines’,N)
此时可以跳过前N行。
实际代码举例:
假设文本文件 mydata.txt中的内容为:
Sally Level1 12.34 45 Yes
1 2 3 4 5
[data1,data2,data3,data4,data5] = textread('mydata.txt','%s %s %f %d %s', 1)
输出结果为:
data1 =
'Sally'
data2 =
'Level1'
data3 =
12.3400
data4 =
45
data5 =
'Yes'
此代码读取了当前目录下的’mydata.txt’文件中的第一行,五列读取的数据类型分别为字符串、字符串、浮点数、整形数、字符串。
3、将数据写入文本文档中——save
save函数不仅用于txt文档的保存,还常用于保存当前工作空间等。
注:当多次往同一个文档用save写入变量时,后面的写入会覆盖前面。
matlab自带帮助文档中textread函数的介绍与用法:
save - Save workspace variables to file
This MATLAB function saves all variables from the current workspace in a MATLAB
formatted binary file (MAT-file) called filename.
save(filename)
save(filename,variables)
save(filename,variables,fmt)
save(filename,variables,version)
save(filename,variables,'-append')
save filename
保存当前工作空间的所有变量到filename指定的文件中,若不指定filename变量,则默认保存到matlab.mat这个文件中。
参数variables为需要存入的变量,可输入多个。
-append 在已经存在的mat文件中保存此变量
数据保存格式选项:
-ascii 8位ASCII格式.
-ascii -tabs 8位ASCII格式以tab位分隔符.
-ascii -double 16位ASCII格式.
-ascii -double -tabs 16位ASCII格式以tab位分隔符.
-ascii -tabs 8位ASCII格式以tab位分隔符.
-mat 默认格式
实际代码举例:
save('d:\1.txt','data1','data2','-ASCII')
此代码将变量data1和data2中数据保存到了D盘下的1.txt文件,使用ASCII格式存储数据。