matlab学习笔记5--低级文件输入输出函数
一起来学matlab-matlab学习笔记5
低级文件输入输出函数
觉得有用的话,欢迎一起讨论相互学习~Follow Me
参考书籍
《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷
MATLABt提供了一组低级文件I/O函数,这些函数都是基于ANSI标准C库的I/O.
MATLAB文件I/O函数使用与C语言子程序一样的设计模式,要读/写数据,需要执行以下步骤。
(1)使用fopen函数打开文件。fopen返回文件的标识符,标识符将被用在所有其他低级文件I/O函数中。
(2)在文件上进行以下操作:
口使用fread函数读二进制数据。
口使用fwrite函数写二进制数据。
口使用fgets/fgetl函数从文本文件中逐行读字符串。
口使用fscanf函数读格式化的ASCII数据。
口使用fprintf函数写格式化的ASCII数据。
(3)使用fclose函数关闭文件。
除了上述操作步骤,还将涉及读/写数据时,如何确定文件上读/写的位置,以及怎样改变位置。
打开文件
>>fid=fopen('fgetl.m');
tline=fgetl(fid);
while ischar(tline)
disp(tline);
tline=fgetl(fid);
end
fclose(fid);
- 验证文件的标识符,确保能成功打开所需要的文件
读二进制数据
- 在MATLAB中提供了fread函数用于读二进制文件的全部或部分数据,并且将数据存在一个矩阵中,其调用格式如下:
- 如果输入流是字节,而且fread到达了文件结尾,但是一个元素需要的字节数才读了一半,这不足一个元素的部分数据将被忽略。然而,如果输入流是位,则不足一个元素的部分数据将被返回作为最后的值。
写二进制数据
- fwrite函数用指定的格式将矩阵的元素写到文件,并返回已写的元素数,其调用格式如下:
>> fid=fopen('magic5.bin','w');
s=fwrite(fid,magic(5),'integer*4');
fclose(fid);
s
s =
25
控制文件的读写位置
- 一旦使用fopen函数打开文件,MATLAB就维持一个文件位置操作指针,用于指示文件上的特定位置。MATLAB利用文件指针确定下一个读或写操作开始的地方法。如何知道文件指针是否在文件的结束(EOF)?如何将指针移动到指定位置?怎样得知当前文件指针在什么地方?怎样重置指针在文件开头(BOF)?
操纵文件指针的函数
- 在MATLAB中提供了fseek函数用于重新设置文件指针的位置。其调用格式如下:
fseek(fileID,offset,origin)
status=fseek(fi1eID,offset,origin)
其中,status为返回值,当status=0时,表示操作成功;当status=1时,则表示操作失败。fileID为文件标识符。offset为移动方向的值,当offset>0,向前移动offset个字节;当offset=0时,不移动;当offset<0时,向后移动offset个字节。origin为指针移动的参照点,以及对应的有效值,'bof',一1表示文件的开始;'cof',0表示文件的当前位置;'eof,1表示文件的结束。
- 读文件test1.dat的指定数据,并写到文件test2.dat上
取得文件指针的位置
- 在MATLAB中提供了ftell函数用于获取文件指针的位置。其调用格式如下:
position:ftell(fileID):ftell函数返回由fileID指定的文件上指针的当前位置,其值是相对于BOF的字节数,即position是从0开始的非负整数。如果返回给position的值为一1,则说明这次ftell函数的操作不成功,使用ferror函数可以确定错误的性质。
查询文件输入和输出时的错误
从文本文件逐行读字串
- 在MATLAB中提供了fgetl与fgets函数来实现从文本文件读字符串行,并且将它们存储在字符串向量中。这两个函数的功能几乎是相同的,不同点仅在于fgets将行结束符(换行符)也存储在字符串向量中,而fgetl不能。
fgetl函数
- fgetl函数用于从文件读一行文本,丢弃换行符。其调用格式如下:
tline=fgetl(fileID):从fileID指定的文件读一行字符串,放在字符串向量tline中,字符串不包含文本的行结束符。如果遇到文件结束符,将返回-1到tline中。fgetl函数只用于文本文件。
fgets函数
- 在MATLAB中提供了fgets函数从文件中读一行,并保留换行符。其调用格式如下:
- tline=fgets(fileID):从fileID指定的文件读一行文本,带有行结束符,存储在变量tline中。如果遇到文件结束符(EOF),“返回-1到dine中。fgets函数只用于文本文件。
- tline=fgets(file1D,nchar):从fileID指定的文件读一行文本,带有行结束符,返回的行最多有nchar个字符。也就是说,文件上的一行多于nchar个字符时,分几次读,但每次读nchar个字符,直到遇到行结束符或文件结束符;读到结束符的这一次,也许不够nchar个字符。
读格式化的ASCII数据
- 在MATLAB中提供了fscanf函数用于从ASCII文件读数据,然后把数据指定给一个或多个变量:
x=0:.1:1;
y=[x;exp(x)];
fid=fopen('exp.txt','w');
fprintf(fid,'%6.2f %12.8f\n',y);
fclose(fid);
% 调用fscanf函数将ASCII文件的数据读到2列的矩阵A
fid=fopen('exp.txt');
A=fscanf(fid,'%g %g',[2 inf]);
fclose(fid);
A=A'
写格式化文本文件
- fprintf 函数与fscanf函数就像一对孪生兄弟,一个负责输出,一个负责输入。fprintf函数主要用于转换数据并将它们输出到文件或屏幕上。其调用格式如下:
- count=fprintf(fileID,format,A,...):按format指定的格式转换矩阵A中的数据,并将它们写到fileID指定的文件中,被写的字节数将返回到count变量中,默认fileID时,将数据输出到屏幕上。
关闭文件
matlab学习笔记5--低级文件输入输出函数的更多相关文章
- matlab学习笔记4--多媒体文件的保存和读取
一起来学matlab-matlab学习笔记4 数据导入和导出_2 多媒体文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...
- C语言学习笔记(三) 输入输出函数的基本用法以及运算符
printf() ——将内容输出到显示器上 四种用法 1.printf("字符串"); 直接输出字符串 2.printf("输出控制符",输出参数); 3. ...
- 【数学建模】MATLAB学习笔记——函数式文件
MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...
- matlab学习笔记---(1)
Matlab学习笔记 一. Desktop Basics (Matlab 基础知识) 当你打开Matlab的时候,matlab按照以下默认的方式展示出来. 该桌面主要包括以下几部分内容: 当前文件夹: ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
- Windows phone 8 学习笔记(1) 触控输入
原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记(一)单元数组
matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x) :取最大的整数 ceil(3.18)=4,ceil( ...
随机推荐
- 如何临时修改 macOS 应用的界面语言?
一般情况下,应用程序的界面语言会和系统语言保持一致.但有些时候,我们也会希望临时换用一种不同的界面语言.例如,一些程序的中文翻译词不达意,有必要参考英文界面来确定功能的准确含义:又如,一些网页会强制按 ...
- Linux操作系统之更改启动菜单的背景图实战案例
Linux操作系统之更改启动菜单的背景图实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.制作图像并上传到服务器 1>.使用window 10操作系统自带的画图工具 ...
- Python入门篇-数据结构堆排序Heap Sort
Python入门篇-数据结构堆排序Heap Sort 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.堆Heap 堆是一个完全二叉树 每个非叶子结点都要大于或者等于其左右孩子结点 ...
- Linux之RHEL7root密码破解(三)
Linux系列root密码破解第三种方式,利用修改boot分区里的开机启动顺序来修改密码,即我们进入BIOS,修改boot启动顺序为CD-ROM: 接下来按F10保存退出 选择Troubleshoot ...
- OpenGL学习(1)—— 测试OpenGL环境是否搭建成功
一个用来验证OpenGL(glfw + glad)环境是否搭建成功的测试代码 内容为生成一个小窗口 #include <glad/glad.h> #include <GLFW/glf ...
- golang gomobile 环境搭建
1. 安装Go语言SDK https://www.golangtc.com/download 2. 配置系统变量这建立GOROOT和GOPATH两个目录,分别对应sdk所在目录与项目文件根目录 3. ...
- 51nod1463 找朋友
[传送门] 写的时候一直没有想到离线解法,反而想到两个比较有趣的解法.一是分块,$f[i][j]$表示第$i$块块首元素到第$j$个元素之间满足条件的最大值(即对$B_l + B_r \in K$的$ ...
- 公告 & 备注
公告 这个\(blog\)从\(2019.12.21\)正式开始使用. 之前的博客请出门右转链接: \[\Large\texttt{my blog}\] \(:)\) 备注 近期要学的算法qwq \( ...
- LeetCode 1143. Longest Common Subsequence
原题链接在这里:https://leetcode.com/problems/longest-common-subsequence/ 题目: Given two strings text1 and te ...
- S1_搭建分布式OpenStack集群_03 Mysql、MQ、Memcached、ETCD安装配置
一.安装mysql(contorller)controller ~]# yum -y install mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 ...