Matllab 读 Txt 文件
Abstract Keywords Matllab
Citation Yao Qing-sheng.Matllab 读 Txt 文件.FUTURE & CIVILIZATION Natural/Social Philosophy & Infomation Sciences,20220105. https://yaoqs.github.io/20220105/matllab-du-txt-wen-jian/
matlab 读取文本文件的几种函数:
1、load—— 适合读取纯数据文本;
2、importdata—— 只读取数据,自动省略数据格式前后的字符,超大文件不适合;
3、textread、textscan—— 适合读取行列规整的文本,会存到元胞中,可通过 headerlines 省略读取字段名(字符行);
4、csvread、dlmread—— 适合读取 csv、xsl 等文件格式文本;
5、fprintf、fscanf—— 适合读取复杂的文本(中英文、数字串混杂出现);
另外,转 http://blog.sina.com.cn/s/blog_4b5b880c0100e7mm.html
如何编写 MATLAB 程序才能实现对.TXT 文档的读写呢?文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB 提供了一系列低层输入输出函数,专门用于文件操作。
1、文件的打开与关闭
1)打开文件在读写文件之前,必须先用 fopen 函数打开或创建文件,并指定对该文件进行的操作方式。fopen 函数的调用格式为:
fid=fopen(文件名,‘打开方式’)说明:其中 fid 用于存储文件句柄值,如果返回的句柄值大于 0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:
- ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
- ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。
- ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。
- ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。
- ‘a’:在打开的文件末端添加数据。文件不存在则创建。
- ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。
- 另外,在这些字符串后添加一个 “t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是 “b”,则以二进制格式打开,这也是 fopen 函数默认的打开方式。
2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用 fclose 函数,调用格式为:
1 | sta=fclose(fid) |
说明:该函数关闭 fid 所表示的文件。sta 表示关闭文件操作的返回代码,若关闭成功,返回 0,否则返回 - 1。如果要关闭所有已打开的文件用 fclose (‘all’)。
2、二进制文件的读写操作
1)写二进制文件
fwrite 函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:
1 | COUNT=fwrite(fid,A,precision) |
说明:其中 COUNT 返回所写的数据元素个数(可缺省),fid 为文件句柄,A 用来存放写入文件的数据,precision 代表数据精度,常用的数据精度有:char、uchar、int、long、float、double 等。缺省数据精度为 uchar,即无符号字符格式。
例 6.8 将一个二进制矩阵存入磁盘文件中。
1 | a=[1 2 3 4 5 6 7 8 9]; |
2)读二进制文件
fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:
1 | [A,COUNT]=fread(fid,size,precision) |
说明:其中 A 是用于存放读取数据的矩阵、COUNT 是返回所读取的数据元素个数、fid 为文件句柄、size 为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取 N 个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到 M×N 的矩阵中,数据按列存放)。precision 用于控制所写数据的精度,其形式与 fwrite 函数相同
3、文本文件的读写操作
1)读文本文件
fscanf 函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:
1 | [A,COUNT]=fscanf(fid,format,size) |
说明:其中 A 用来存放读取的数据,COUNT 返回所读取的数据元素个数,fid 为文件句柄,format 用来控制读取的数据格式,由 % 加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在 % 与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size 为可选项,决定矩阵 A 中数据的排列形式,它可以取下列值:N(读取 N 个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到 M×N 的矩阵中,数据按列存放)。
2)写文本文件
fprintf 函数可以将数据按指定格式写入到文本文件中。其调用格式为:
1 | fprintf(fid,format,A) |
说明:fid 为文件句柄,指定要写入数据的文件,format 是用来控制所写数据格式的格式符,与 fscanf 函数相同,A 是用来存放数据的矩阵。
例 6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
1 | a='string'; |
matlab 读 txt 文件
1 | fid=fopen('fx.txt','r'); |
另外有的 txt 文件还可以用 load 来打开其语句为
1 | f=load('xxx.txt') |
个人觉得用第一种方式较好。因为有些时候,特别是 xxx.txt 的一行种有多个数据时用 load
就比较麻烦了。
转自 https://blog.csdn.net/awakeljw/article/details/76175515
matlab 的文件读取函数功能可以读取各种文件类型,包括
1 | textread(字母和数值每行格式一致) |
matlab 对文件中混乱的文本格式读取操作总结对于本文字符数字较为混乱的文本进行文本操作需要对文件内部进行操作,包括文本位置指针,文件逐行读取,字符匹配等等复杂操作。主要用到的几个函数有
1 | feek(设置指针位置) |
具体用法:
1 | fseek(fid,-1,’eof’),指针到末尾 |
¶MATLAB 数据导入(ImportData)
在 MATLAB 中导入数据意味着从外部文件加载数据。该 importdata 功能允许加载不同格式的各种数据文件。它具有以下五种形式 -
1 | 序号 功能说明 |
默认情况下,Octave 不支持该 importdata () 功能,因此您必须搜索并安装此软件包才能使以下示例适用于 Octave 安装。
- 实例 1
让我们加载并显示图像文件。创建一个脚本文件并在其中键入以下代码 -
1 | filename = 'smile.jpg'; |
运行文件时,MATLAB 将显示图像文件。但是,必须将其存储在当前目录中。
- 实例 2
在此示例中,我们导入一个文本文件并指定 Delimiter 和 Column Header。让我们创建一个以空格分隔的 ASCII 文件,其中包含标题为 weeklydata.txt 的列标题。
我们的文本文件 weeklydata.txt 看起来像这样 -
1 | SunDay MonDay TuesDay WednesDay ThursDay FriDay SaturDay |
创建一个脚本文件并在其中键入以下代码 -
1 | filename = 'weeklydata.txt'; |
运行文件时,它显示以下结果 -
1 | SunDay |
- 实例 3
在此示例中,让我们从剪贴板导入数据。
将以下行复制到剪贴板 -
Mathematics is simple
创建一个脚本文件并输入以下代码 -
1 | A = importdata('-pastespecial') |
运行文件时,它显示以下结果 -
1 | A = |
¶ 底层文件 I / O
importdata 函数是一个高级函数。MATLAB 中的底层文件 I/O 函数允许对文件的读写数据进行最大程度的控制。但是,这些函数需要更详细的文件信息才能有效地工作。
MATLAB 为字节或字符级别的读写操作提供以下函数 -
1 | 函数 描述 |
导入具有底层 I / O 的文本数据文件
MATLAB 提供以下功能用于文本数据文件的底层导入 -
fscanf 函数读取文本或 ASCII 文件中的格式化数据。
fgetl 和 fgets 的时间,其中,一个换行字符的每一行分离功能读取的文件的一行。
fread 函数读取字节或位级别的数据流。
在线示例我们在工作目录中保存了一个文本数据文件 “myfile.txt”。该文件存储了三个月的降雨数据;2012 年的六月,七月和八月。
myfile.txt 数据文件包含五个地点的时间、月份和降雨量的重复测量集。头数据存储月数 M;因此我们有 M 组度量。
该文件看起来像这样 -
1 | Rainfall Data |
我们将从该文件导入数据并显示此数据。采取以下步骤 -
使用 fopen 函数打开文件并获取文件标识符。
用来描述文件中的数据格式说明符,例如’ % s’表示字符串,’ % d’表示整数,或’ % f’表示浮点数。
要跳过文件中的文字字符,请在格式说明中包括它们。要跳过数据字段,请在说明符中使用星号(‘*’)。
例如,要读取标头并返回 M 的单个值,我们这样写 -
1 | M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1); |
默认情况下,fscanf 根据我们的格式说明读取数据,直到找不到与数据匹配的内容,或者到达文件末尾为止。在这里,我们将使用 for 循环读取 3 组数据,并且每次将读取 7 行和 5 列。
我们将在工作区中创建一个名为 mydata 的结构,以存储从文件中读取的数据。这种结构有三个字段 - time, month, and raindata 数组。
创建一个脚本文件并在其中键入以下代码 -
1 | filename = '/data/myfile.txt'; |
运行文件时,它显示以下结果 -
1 | 12:00:00 |
Address:Department of Natural/Social Philosophy & Infomation Sciences, CHINA
Biography...
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
Like this article? Support the author with