一起来学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--低级文件输入输出函数的更多相关文章

  1. matlab学习笔记4--多媒体文件的保存和读取

    一起来学matlab-matlab学习笔记4 数据导入和导出_2 多媒体文件的保存和读取 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  2. C语言学习笔记(三) 输入输出函数的基本用法以及运算符

    printf() ——将内容输出到显示器上 四种用法 1.printf("字符串");   直接输出字符串 2.printf("输出控制符",输出参数); 3. ...

  3. 【数学建模】MATLAB学习笔记——函数式文件

    MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...

  4. matlab学习笔记---(1)

    Matlab学习笔记 一. Desktop Basics (Matlab 基础知识) 当你打开Matlab的时候,matlab按照以下默认的方式展示出来. 该桌面主要包括以下几部分内容: 当前文件夹: ...

  5. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  6. Windows phone 8 学习笔记(2) 数据文件操作

    原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...

  7. Windows phone 8 学习笔记(1) 触控输入

    原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...

  8. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  9. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

随机推荐

  1. Python入门篇-StringIO和BytesIO

    Python入门篇-StringIO和BytesIO 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.StringIO(用于文本处理) 1>.使用案例 #!/usr/bin ...

  2. ACAG 0x02-8 非递归实现组合型枚举

    ACAG 0x02-8 非递归实现组合型枚举 之所以专门来写这道题的博客,是因为感觉从最根本处了解到了递归的机器实现. 主要的就是两个指令--Call和Ret. Call指令会将返回地址入栈(系统栈) ...

  3. 【后缀表达式求解】No.3.栈-evaluate-reverse-polish-notation题解(Java版)

    牛客网的题目链接 题目描述 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid opera ...

  4. Laravel —— 多模块开发

    Laravel 框架比较庞大,更适用于比较大的项目. 为了整个项目文件结构清晰,不同部分分为不同模块很有必要. 一.安装扩展包 1.根据不同 Laravel 版本,选择扩展包版本. packagest ...

  5. lis框架showoncodename的用法

    fm.Sex.value=tContent2[0][3];//这个一定得是查询出来的码值alert("获取到的值是:"+tContent2[0][3]);showOneCodeNa ...

  6. AndroidStudio中Flutter打包APK

    1.生成签名文件 在打包之前我们需要一个签名文件,证明文件的唯一性. keytool -genkey -v -keystore F:\APP\sign.jks -keyalg RSA -keysize ...

  7. windowns server 2008 r2 AD桌面文件重定向设置

    1.创建将要进行重定向的组(此处为chongdingxiangzu) 2.选择要重定向的用户,并将此用户加入到要重定向的组里 3.打开组策略管理,右击刚才用户所属的组织单位(OU)进行新建GPO(此处 ...

  8. GoCN每日新闻(2019-10-13)

    GoCN每日新闻(2019-10-13) 1. 通过测试学习Go语言 https://mp.weixin.qq.com/s/MGT_yoP_NdWVGpwlAJFK4A2. go panic reco ...

  9. mysql upper() 函数

    mysql> select upper(" cdcdcd"); +------------------+ | upper(" cdcdcd") | +-- ...

  10. 【洛谷】P1032 字串变换

    题目地址:https://www.luogu.org/problemnew/show/P1032 洛谷训练场BFS的训练题呀. “BFS不就是用队列的思想去遍历一切情况嘛.我已经不是小孩子了,我肯定能 ...