Matlab读取文本文档txt文件

Matlab读取文本文档txt文件,第1张

对于 行数和列数整齐 ,但是其中既有数据又有文本的文本文档读取,可以使陪枝亩用以下几个函数。

以filename.txt为例芦森,其中有5行4列,其搭派中第一列为字符,剩下几列为数据。

对于 行列不整齐 的txt文件,可以采用逐行读取的方法。

在Windows中,“D:\”表示D盘,“D:”表示目录

还可以查找特定后缀的文件:

如: 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12127727.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存