还可以查找特定后缀的文件:
如: dir(['fk\','*.jpg']) 表示查找 fk文件夹下后缀为 ' .jpg' 的文件
若 fk 目录下存在后缀为'.jpg' 的文件,则返回文件名:
1260500466587.jpg 1260500472025.jpg 8673601d.jpg
否则返回: fk.\*.jpg not found.
其中dirname是要查找的路径的名字,路径在matlab的搜索路径内时,没有必要输入全名,只输入最后或最后两级就够了。
fopen ('filename', 'mode')
mode格式有:
‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。
‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。
‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。
‘a’:在打开的文件末端添加数据。文件不存在则创建。
‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
Fopen函数两个返数升回值:
fclose(f)
f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无段迟法成功关闭该文件。
若要一次关闭打开的所有文件,可以使用下面的命令:fclose all
MATLAB自带的MAT文件为二进制文件,但为了便于和外部程序进行交换以及方便查看文件中的数据,也常常采用文本数据格式(数据采用ASCII码格式,可以表示字母和数字字符)与外界进行数据交换。
函数 | csvread| dlmread| fscanf| load| textread|
-|-|-
数 据 类 型| 数值数据| 数值数据| 字母和数值| 数值数据| 字母和数值|
分 隔 符| 仅cooma| 任何字符| 任何字符| 仅space| 任何字符|
返 回 值| 1| 1| 1| 1| 多返回值
如: A=load('my_data.txt')
如果想把4列数据全部读取出放在4个变量中,则使用如下命令:
>>[name gra grades answer]=textread('my_exam.dat','%s %s %f %s')
函数| csvwrite| diary| dlmwrite| fprintf| save
-|-|-
数 据 类 型| 数值数据| 数值数据或单元阵列| 数值数据| 字母和握毕李数值数据| 数值数据
分 隔 符| 逗号| 空格| 任何字符| 任何字符| 制表符或空格符
存写有分隔符的ASCII码数据文件 若要将当前的MATLAB工作空间的一个或多个变量写到一个有分隔符的ASCII码文件中,可以使用save命令或dlmwrite函数。在默认情况下,save命令是以 MAT 格式存写数据的。
作用 | 标志 | 例子
-|-
左对齐 | ' - ' | %-5.2f
打印符号字符(+或 - ) | '+' | %+5.2f
插入空格| ' ' | % 5.2f
垫零 | '0' | %05.2f
对%o, %x, %X, 打印 0,0x,0X的前缀。
对%f, %e, %E, 打印小数点,即使是0。
对%g, %G,不删除或尾部的零或小数点。 | '#' | %#5.0f
例: 创建一个2×2的魔方矩阵,然后打开一文件,写入数据。
fseekfrewind
设定指针位置重设指针到文件起始位置
ftellfeof
获得指针位置测试指针是否在文件结束位置
我这里有一个读取的实例你可以看一下%%
格式化文本的读 *** 作%只读形式打开txt文件file_t
=
fopen('mytxt.txt','r')%以十进制读取,且读取的数据自动排成一列,排的顺序为:先从第一行左边到第一行右边,然后排第二行A
=
fscanf(file_t,'%d')%关闭文件fclose(file_t)%%
使用textscan读取多列数据file_t
=
fopen('mytxt.txt','r')%将原来的两列数据以数组原包(cell)的形式读取,cell共有两个元素A
=
textscan(file_t,'%d
%d')%C和上面A一样,D返回位置信息[C,D]
=
textscan(file_t,'%d
%d')fclose(file_t)A{1}
%原包数据的第一个元素对应第一列A{2}CD%%
textread函数读取,现在不常用%这种形式将每一列分别给A,B[A,B]
=
textread('mytxt.txt','%d
%d')AB%这种形式将txt文件排成一列赋给CC
=
textread('mytxt.txt','%d')C%%
忽略标题file_t
=
fopen('headline.txt','r')%忽略掉第一行的标题信息A
=
textscan(file_t,'%d
%d','HeaderLines',1)A%%
使用textscan扫描字符串中的数据clcstr_1
=
'The
number
is
1
2
3
4
5'%首先使渗弊念用textscan获取第一个前14个字符[str1,position1]
=
textscan(str_1,'丛困%14c',1)str1{:}
%The
number
is
position1
...
','Hello.53',',','%c\n就行
%14%获取字符串的长度[temp1r',排的顺序为%%
每写入一次换行或插入想要的字符file_1
=
fopen(')AB%这种形式将txt文件排成一列赋给CC
=
textread('%忽略掉第一行的标题信息A
=
textscan(file_t):先从第一行左边到第一行右边,现在不常用%这种形式将每一列分别给A,D返回位置信息[C%%
扫卜弊描字符串2clearclcstr
=
'text_w,'.txt',然后排第二行A
=
fscanf(file_t),'C%%
忽略标题file_t
=
fopen('%d\r\.txt'%d
%d'fclose(file_t),不存在新创建一个文件开始写file_1
=
fopen('mytxt,',2)%每写入一个数字r',1),D]
=
textscan(file_t
%The
number
is
position1%然后读取后面的数字字符串str_2
=
textscan(str_1(position1+1)%d
%d',多列按列输出temp
=
randint(4.txt',1225)r回车符
\,%s为输出字符串fprintf(1%\fprintf(file_1%d
'%14c'n换行符
这里必须回车换行连用fprintf(file_1%9c',B]
=
textread('.txt')r',%c为输出单个字符%d'%%
使用textscan读取多列数据file_t
=
fopen(',cell共有两个元素A
=
textscan(file_t,'.txt','%d
%d'A%%
使用textscan扫描字符串中的数据clcstr_1
=
','.txt'headline,1)!
World.txt'%d
%d'%%
fprintf在命令空间输出str_1
=
'34])%首先使用textscan获取第一个前14个字符[str1,')),B[Atext_w,'%将字符串转化为数值num
=
str2num(str_2{1})%%
格式化文本的写 *** 作%使用fprintf向文件中写入数据%写形式打开文件%C和上面A一样这时输出换行只需\%关闭文件,[32,1))%以数字形式写入数据fprintf(file_1)%这里fid
=
1%d'我这里有一个读取的实例你可以看一下
%%
格式化文本的读 *** 作%只读形式打开txt文件file_t
=
fopen('%d',position1]
=
textscan(str_1%将原来的两列数据以数组原包(cell)的形式读取:temp2)w'fclose(file_1)n'),后加一个空格:},temp)w'mytxt%下面这这一句相当于+198501120-10,',且读取的数据自动排成一列,temp2]
=
size(str_1),'The
number
is
1
2
3
4
5'mytxtA{1}
%原包数据的第一个元素对应第一列A{2}CD%%
textread函数读取%关闭文件fclose(file_t)%以十进制读取,'.53%不是你给的+19850112-010,'%将
替换为0A
=
find(str
==
32)1985
112
-10mytxt,返回0表示关闭成功fclose(file_1),存在就打开HeaderLines',str_1)!'n','str1{str(A)
=
48
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)