1.Xlsread读入数据
[a3, h_lukou] =xlsread('ex1.xls','sheet3'); %指定工作表中数据,表头和字符数据存入h_lukou
[a,h_lukou] = xlsread('2011B-data.xls', 'lukou'); %指定工作表中数据,表头和字符数据存入h_lukou
[a,h_lukou] = xlsread('2011B-data.xls','sheet3’,'A2:C3'); %读取指定工作量、指定区域的数据
2.文本数据
1)a=textread('b-lukou.txt');%这种读取的信息自动分隔,可带格式
读整个文件,例见B2011_fig.m
2)textscan
fr = fopen('b-lukou.txt ', 'r'); txt数据空格分隔
g1 = textscan(fr, '%d %d %d %f \n'); %读一行中指定格式的内容,指针移到未读处
%这里\n是换行符,英文是next line
g1 = textscan(fr, '%d %d %d %f \n',N);%同一格式重复读N次,(包括P87例2.10好像不执行)
fr = fopen('ex2.txt ', 'r'); txt数据’,’分隔
g1 = textscan(fr, '%d %d %d %f \n','delimiter',',');
textscan更适合读入大文件;
textscan可以从文件的任何位置开始读入,而textread 只能从文件开头开始读入;
textscan也可以从上一次textscan结束的位置开始读入,而textread不能;
textscan只返回一个数组,而textread要返回多个数组;
textscan提供更多转换读入数据的选择;
textscan提供给用户更多的配置参数。
总之就是说textscan比textread要牛
2)逐行读TXT格式数据
fr=fopen('ex2.txt'); %打开要读的文件并送入“fr”,这是缺省“rt”形式。
fout=fopen('out1.txt','wt'); %建立要写文件,tab分隔,若文件存在则清除原内容。
%‘at’,写入方式打开,建立或续写内容
%‘r+t’同时支持读、写方式
while ~feof(fr)
a1=fgetl(fr); %读取整行,按字符处理,会自动移动指针,但只对文本文件有效
%下面判断首字符是否为数值
if double(a1(1))>=48 &&double(a1(1))<=57
fprintf(fout,'%s \n',a1); %写入文件
fprintf(1,'%s\n',a1); %显示器显示
%continue %移动指针的,现在不需要
end
end
fclose(fout); %关闭文件
fclose(fr);
注:调用函数控制读写位置
a) fseek(fr,offset,origin)
其中,fr—为fopen()返回的文件标示符,操作成功返回0,否则为-1.
offset—整型变量,移到指正的方向和字节数:
offset>0,当前位置向“尾”移动offset 字节;
offset=0,当前位置不移动;
offset<0,当前位置向“头”移动offset 字节;
origin—指定指针的参考位置,取值为:
‘bf’or -1,文件开头
‘cof’or 0,文件当前位置
‘eof’or 1,文件尾
b)ftell(fr)
获取指针离文件开头的字节数,若值为-1表示未成功调用。
c)frewind(fr)
移动指针到文件开头。
d)feof(fr) 判断文件是否到文件尾
fgets、fgetl 读取文件的下一行,指针自动下移。
二者的区别:前者包括换行符,后者不包括。
如:fgets(fr,10)%读取fr一行的最多10个字符。
3)a2=dlmread('data.txt') %读整个数据
数据‘,’分隔的可指定读取数据的起始行、列(注意0行0列开始编号),如:a2=dlmread('ex2.txt',',',5,3)
4) A =load('data.txt') %读整个数据
5)importdata('filename','delimiter','headerline’)
如空格分隔,无表头:
importdata('data.txt')
也可importdata('data.xls'),但不能指定工作表多。
3.Xlswrite导出数据
xlswrite('tempdata.xls',d, 'Temperatures', 'E1')
%将数组d的数据写至tempdata.xls文件,新建工作表'Temperatures',从该工作表的E1单元格开始写入。如:程序见B2011_try.m
xlswrite('data1.xls', b,'xian_chang', 'A1'); %将矩阵b写入data1.xls的xian_chang工作表,从A1开始写
xlswrite('data1.xls', d,'fuwutai_zx', 'A1'); %将矩阵d写入data1.xls的fuwutai_zx工作表,从A1开始写
xlswrite('data1.xls', d1,'fuwutai_hx', 'E5'); %将矩阵d1写入data1.xls的fuwutai_hx表,从E5开始写
%上术三条可同时执行
4.不建议使用下面命令进行数据导出
%导出数据:用dlmwrite('data.xls',c) ,b表示数值矩阵,文件为类型为excel,但各列之间“,”分隔,如:
dlmwrite('data.xls',b);
%建议分两步走:先将MATLAB数据导成txt文件,即dlmwrite('data.txt',b),再打开excel,将txt数据导入excel即可。
dlmwrite('data.txt',b);

