d读入数据
[a3,h_lukou]=xlsread('','sheet3');%指定工作表中数据,表头和字符数据存入h_lukou
[a,h_lukou]=xlsread('','lukou');%指定工作表中数据,表头和字符数据存入h_lukou
[a,h_lukou]=xlsread('','A2:C3');%读取指定区域的数据
[g=xlsread('','A2:C300')%读取指定区域的数据
2.文本数据
1)a=textread('');%这种读取的信息自动分隔,可带格式
读整个文件,例见B2011_fig.m
2)textscan
fr=fopen('','r');txt数据空格分隔
g1=textscan(fr,'%d%d%d%fn');%读一行中指定格式的内容,指针移到未读处
g1=textscan(fr,'%d%d%d%fn',N);%同一格式重复读N次,(包括P87例2.10
好像不执行)
fr=fopen('','r');txt数据’,’分隔
g1=textscan(fr,'%d%d%d%fn','delimiter',',');
textscan更适合读入大文件;
textscan可以从文件的任何位置开始读入,而textread只能从文件开头开始读入;
textscan也可以从上一次textscan结束的位置开始读入,而textread不能;
textscan只返回一个数组,而textread要返回多个数组;
textscan提供更多转换读入数据的选择;
textscan提供给用户更多的配置参数。
总之就是说textscan比textread要牛
2)逐行读TXT格式数据
fr=fopen('');%打开要读的文件并送入“fr”,这是缺省“rt”形式。
fout=fopen('','wt');%建立要写文件,tab分隔,若文件存在则清除原内容。
%‘at’,写入方式打开,建立或续写内容
%‘r+t’同时支持读、写方式
while~feof(fr)
a1=fgetl(fr);%读取整行,按字符处理,会自动移动指针,但只对文本文件有效
%下面判断首字符是否为数值
ifdouble(a1(1))>=48&&double(a1(1))<=57
fprintf(fout,'%sn',a1);%写入文件
fprintf(1,'%sn',a1);%显示器显示
%continue%移动指针的,现在不需要
end
end
fclo(fout);%关闭文件
fclo(fr);
注:调用函数控制读写位置
a)fek(fr,offt,origin)
其中,fr—为fopen()返回的文件标示符,操作成功返回0,否则为-1.
offt—整型变量,移到指正的方向和字节数:
offt>0,当前位置向“尾”移动offt字节;
offt=0,当前位置不移动;
offt<0,当前位置向“头”移动offt字节;
origin—指定指针的参考位置,取值为:
‘bf’or-1,文件开头
‘cof’or0,文件当前位置
‘eof’or1,文件尾
b)ftell(fr)
获取指针离文件开头的字节数,若值为-1表示未成功调用。
c)frewind(fr)
移动指针到文件开头。
d)feof(fr)判断文件是否到文件尾
fgets、fgetl读取文件的下一行,指针自动下移。
二者的区别:前者包括换行符,后者不包括。
如:fgets(fr,10)%读取fr一行的最多10个字符。
3)a2=dlmread('')%读整个数据
数据‘,’分隔的可指定读取数据的起始行、列(注意0行0列开始编号),如:
a2=dlmread('',',',5,3)
4)A=load('')%读整个数据
5)importdata('filename','delimiter','headerline’)
如空格分隔,无表头:
importdata('')
也可importdata(''),但不能指定工作表多。
te导出数据
xlswrite('',d,'Temperatures','E1')
%将数组d的数据写至文件,新建工作表'Temperatures',从该工作表的E1单元格开始写
入。如:程序见B2011_try.m
xlswrite('',b,'xian_chang','A1');%将矩阵b写入的xian_chang工作表,从A1开始写
xlswrite('',d,'fuwutai_zx','A1');%将矩阵d写入的fuwutai_zx工作表,从A1开始写
xlswrite('',d1,'fuwutai_hx','E5');%将矩阵d1写入的fuwutai_hx表,从E5开始写
%上术三条可同时执行
4.不建议使用下面命令进行数据导出
%导出数据:用dlmwrite('',c),b表示数值矩阵,文件为类型为excel,但各列之间“,”分隔,
如:
dlmwrite('',b);
%建议分两步走:先将MATLAB数据导成txt文件,即dlmwrite('',b),再打开excel,将txt
数据导入excel即可。
dlmwrite('',b);
MS-Excel电子表格文件xlsinfo获得文件信息
使用命令[type,sheets]=xlsfinfo(filename)返回文件类型type和工作表信息。如:[type,
sheets]=xlsfinfo('')
函数功能
csvread读入以逗号分隔的数据
csvwrite将数据写入文件,数据间以逗号分隔
dlmread将以ASCII码分隔的数值数据读入到矩阵中
dlmwrite将矩阵数据写入到文件中,以ASCII分隔
textread从文本文件中读入数据,将结果分别保存
textscan从文本文件中读入数据,将结果保存为单元数组
下面详细介绍这些函数。
d、csvwrite
csvread函数的调用格式如下:
●M=csvread('filename'),将文件filename中的数据读入,并且保存为M,filename
中只能包含数字,并且数字之间以逗号分隔。M是一个数组,行数与filename的行数相
同,列数为filename列的最大值,对于元素不足的行,以0补充。
●M=csvread('filename',row,col),读取文件filename中的数据,起始行为row,
起始列为col,需要注意的是,此时的行列从0开始。
●M=csvread('filename',row,col,range),读取文件filename中的数据,起始
行为row,起始列为col,读取的数据由数组range指定,range的格式为:[R1C1R2
C2],其中R1、C1为读取区域左上角的行和列,R2、C2为读取区域右下角的行和列。
csvwrite函数的调用格式如下:
●csvwrite('filename',M),将数组M中的数据保存为文件filename,数据间以逗号
分隔。
●csvwrite('filename',M,row,col),将数组M中的指定数据保存在文件中,数据由
参数row和col指定,保存row和col右下角的数据。
●csvwrite写入数据时每一行以换行符结束。另外,该函数不返回任何值。
13.3低级文件I/O
本节介绍一些基本的文件操作,这些操作如表13-3所示。
表13-3MATLAB的基本文件操作
函数功能
fclo关闭打开的文件
feof判断是否为文件结尾
ferror文件输入输出中的错误查找
fgetl读入一行,忽略换行符
fgets读入一行,直到换行符
fopen打开文件,或者获取打开文件的信息
fprintf格式化输入数据到文件
fread从文件中读取二进制数据
frewind将文件的位置指针移至文件开头位置
fscanf格式化读入
fek设置文件位置指针
ftell文件位置指针
fwrite向文件中写入数据
下面重点介绍函数fprintf。该函数的调用格式如下:
count=fprintf(fid,format,A,...),该语句将矩阵A及后面其他参数中数字
的实部以format指定的格式写入到fid指定的文件中,返回写入数据的字节数。
上面语句中,参数format由%开头,共可由4个部分组成,分别如下:
●标记(flag),为可选部分。
●宽度和精度指示,为可选部分。
●类型标志符,为可选部分。
●转换字符,为必需部分。
1.标记
标记用于控制输出的对齐方式,可以选择的内容如表13-4所示。
表13-4标记的可选内容
函数功能示例
负号(-)在参数左侧进行判别%-5.2d
加号(+)在数字前添加符号%+5.2d
空格在数字前插入空格%5.2d
0在数字前插入0%05.2d
2.宽度和精度指示
用户可以通过数字指定输出数字的宽度及精度,格式如下:
●%6f,指定数字的宽度;
●%6.2f,指定数字的宽度及精度;
●%.2f,指定数字的精度。
例13-6fprintf函数宽度和精度指示符示例。
在命令窗口中输入如下命令:
>>file_type=fopen('D:','w');
>>fprintf(file_h,'%6.2f%12.8fn',1.2,-43.3);
>>fprintf(file_h,'%6f%12fn',1.2,-43.3);
>>fprintf(file_h,'%.2f%.8fn',1.2,-43.3);
>>fclo(file_h)
ans=
0
打开该文件,其内容为:
1.20-43.30000000
1.200000-43.300000
1.20-43.30000000
从上述结果可以看出宽度和精度控制的效果。
3.转换字符
转换字符用于指定输出的符号,可以选择的内容如表13-5所示。
表13-5格式化输出的标志符及意义
标志符意义
%c输出单个字符
%d输出有符号十进制数
%e采用指数格式输出,采用小写字母e,如:3.1415e+00
%E采用指数格式输出,采用大写字母E,如:3.1415E+00
%f以定点数的格式输出
%g%e及%f的更紧凑的格式,不显示数字中无效的0
%G与%g相同,但是使用大写字母E
%i有符号十进制数
%o无符号八进制数
%s输出字符串
%u无符号十进制数
%x十六进制数(使用小写字母a-f)
%X十六进制数(使用大写字母A-F)
其中%o、%u、%x、%X支持使用子类型,具体情况这里不再赘述。格式化输出标志
符的效果见下面的例子。
例13-7fprintf格式化输出示例。
>>x=0:.1:1;
>>y=[x;exp(x)];
>>fid=fopen('','wt');
>>fprintf(fid,'%6.2f%12.8fn',y);
>>fclo(fid)
ans=
0
显示该文件:
>>
0.001.00000000
0.101.10517092
„
0.902.45960311
1.002.71828183
例13-9利用fprintf函数在显示器上输出字符串
>>fprintf(1,'It''sFriday.n')
It'sFriday.
在该例中,利用1表示显示器,并且用两个单引号显示单引号,使用n进行换行。
在格式化输出中,这类符号称为转义符。MATLAB中的常用转义符如表13-6所示。
表13-6MATLAB中的常用转义符
转义符功能
b退格
f表格填充
n换行符
r回车
ttab
,反斜线
''或''',单引号
%%%,百分号
本文发布于:2022-12-08 05:59:33,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/64225.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |