matlab写入txt文件进行自动化测试总结:fopen、fclose和fprintf的用法

news2025/1/13 15:41:30

前言

日常学习的过程中使用了matlab读写txt文件,记录一下基本函数的使用,本文主要介绍了fopenfclosefprintf几个函数,这些主要是面向txt格式的文件保存数据。还有其他几个函数,比如freadfwrite,用过但是他们是针对写二进制文件的,写在txt文件中会出现乱码,所以这里就不介绍了。

前面是对fopenfclosefprintf函数的介绍,后面给了一个我的自建demo可以运行

fopen 函数

fopen的基本语法:

fid = fopen(filename, permission)

如果fid=-1,说明打开失败,查看文件是否存在。

在这里插入图片描述
注意MATLAB 默认打开的是二进制文件。

如果文件以文本格式打开,那么一个“t”就应加入到 permission 字符串中(例如“rt”或“rt+”)。

1. 以只读模式打开文件

fid = fopen('file.txt','r')

权限(permission)字符串是“r”,它指出这个文件的打开方式为只读。找不到文件会报错

注意这样打开的是二进制文件,不是txt文件。默认是二进制,permission我们用的是’r’,其实是‘rb’。

2. 以写入模式打开文件

使用txt文件最常用的语句!

fid = fopen('file.txt','wt')

权限(permission)字符串是“wt”,它指出这个文件的打开方式为写入,指定这个文件为新建文本文件。如果这个文件已存在,那旧文件就会被删除,打开新建的文件等待写入数据。如果我们要替换先前已存在的数据,那么就可以采用这个形式。

fid = fopen('file.txt','at')

权限(permission)字符串是“at”,它指出这个文件的打开方式为写入,指定一个我们想要增加数据的文本文件。如果这个文件已经存在了,那么它将会被打开,新的数据将会添加到已存在的数据中。如果我们不想替换已存在的数据,那么就可以采用这个方式。

3. 以读写模式打开文件

fid = fopen('file.txt', 'r+')

权限(permission)字符串是“r+”,它指出这个文件的打开方式为读写,找不到文件会报错。

fid = fopen('file.txt','w+')

权限(permission)字符串是“w+”,它指出这个文件的打开方式为读写,指定这个文件为新建文本文件。如果这个文件已存在,那旧文件就会被删除,打开新建的文件等待写入数据。如果我们要替换先前已存在的数据,那么就可以采用这个形式。

fid = fopen('file.txt','a+')

好的编程习惯

  • 在使用 fopen 语句时,一定要注意指定合适的权限,这取决于你是要读取数据,还是要写入数据。好的编程习惯可以帮助你避免(类似于覆盖的)错误

  • 在文件打开操作后检查它的状态以确保它被成功打开。如果文件打开失败,提示用户解决方法。

fclose 函数

fclose把以户自定义格式编写的格式化数据写入一个文件。它的形式为

status = fclose(fid)
status = fclose('all')

其中 fid 为文件标识,status 是操作结果,如果操作成功,status 为 0,如果操作失败,status 为-1。

函数 status = fclose(‘all’)关闭了所有的文件,除了 stdout(fid = 1)和 stderr(fid = 0)。如果所有的文件关闭成功,status 将为 0,否则为-1。

fprintf函数

fprintf函数用于进行写入字段,类似于C语言的printf函数,语法很好懂,我这里使用的是下面的格式写入到我的txt文件当中。

count = fprintf(fid, format, val1, val2, ...)
fprintf(format, val1, val2, ...)

其中fid是我们要写入数据那个文件的文件标识,format是控制数据显示的字符串。如果fd丢失,数据将写入到标准输出设备(命令窗口)。这些格式已经在第二章介绍过。
格式(format)字符串指定队列长度,小数精度,域宽和输出格式的其他方面。它包括文字数字字符(%)和字符序列(用于指定输出数据显示的精确格式)。一个典型的数据输出格式字符串图81所示。字符%总是标志着格式化字符串的开始,在字符%之后,这字符串应包括一个标识(fg),一个域宽,一个精度指定符和一个转换指定符。字符%,转换指定符一般会要求出在任何格式中,而标识,域宽,精度指定符是可选的。
在这里插入图片描述

可能的转换指定符

在这里插入图片描述
可能的修改符
在这里插入图片描述
转义字符
在这里插入图片描述

格式转字符串的理解

还是用之前的图:

在这里插入图片描述

如果我们用格式化字符串指定域宽和精度,那么小数点前的数就是域宽,域宽是所要显示的数所占的字符数。小数点后的数是精度,是指小数点后应保留的位数。这样说不直观,我们看一些例子:

1. 显示十进制整数数据

显示十进制整数数据要用到%d 格式转换指定符。如果需要的话,d 可能出现在标识(flag),域宽和精度指定符之前。如果有用的话,精度指定符可以指定要显示的数据的最小数字个数,如果没有足够多的数字,那么 MATLAB 将在这个数之前添加 0。
在这里插入图片描述
如果用格式指定符%d 显示一个非十进制数,这个指定符将会被忽略,这个数将会以科学计算法格式显示。例如

fprintf('%6d\n',123.4)

将产生结果 1.234000e+002。

2.显示浮点数数据

浮点数数据的显示要用到%e,%f。,%g 格式转换指符。如果需要的话,这些格式转换指符可能出现在标识(flag),域宽和精度指定符之前。如果指定的域宽太小了,不能显示这个数,则这个域宽是无效的。否则,则应用指定的域宽。
在这里插入图片描述

3.显示字符数据

字符数据的显示要用到%e,%c 格式转换指符。如果需要的话,这些格式转换指符可能出现在标识(flag),域宽和精度指定符之前。如果指定的域宽太小了,不能显示这个数,则这个域宽是无效的。否则,则应用指定的域宽。
在这里插入图片描述

注意
应该保证 fprintf 函数中的数据类型与格式字符串中的格式转换指定符的类型要一一对应,否则将会产生意料之外的结果。

我的使用方法(自用)

日常需要写一个测试,测试不同参数下的各种指标,然后把指标输出到txt文件中,按照

txt_write_condition.m:txt文件初始化参数条件

function txt_write_condition(txtName,para,mode)
    filename=[txtName,'.txt'];
    fileID = fopen(filename,mode);
    fprintf(fileID,'parameter=%f\n',para);
    fprintf(fileID,'%s:','Max error');
    fclose(fileID);
end

txt_write_data.m:txt文件写入数据

function txt_write_data(txtName,para)
    filename=[txtName,'.txt'];
    fileID = fopen(filename,'a+');
    fprintf(fileID,'%f\n\n',para);
    fclose(fileID);
end

main.m:主函数

n=10;%10次测试,写一个for循环
para=linspace(0.1,1.0,10);%测试10个参数的指标
for k=1:n
    txtname = 'res1';%定义文件的名字,txt文件为res1.txt,可以自定义
    if k==1
        mode='w+';%写入模式,原来有res1.txt文件覆盖重新写入
    else
        mode='a+';%继续后面的写入,不要覆盖原来的文件
    end
    %读写txt函数初始化:写入参数条件
    txt_write_condition(txtname,para(k),mode);

    %%%%%%%%%%%%%%%%%%
    %%%假设获取了指标最大运行时间:max_time
    max_time=exp(k);
    %%%%%%%%%%%%%%%%%%

    txt_write_data(txtname,max_time);
end

结果

输出结果

在这里插入图片描述

fopenfclosefprintf函数的说明摘录自,比起matlab文档要详细很多,希望对大家有帮助!!!

[1] S.J.Chapman《MATLAB编程》中文版

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/541038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【dcdc】AP2813 DCDC降压恒流芯片 两路输出 一路恒流 一路瀑闪 电动摩托汽车灯方案

1,方案来源:深圳市世微半导体有限公司 汤巧 2,产品描述 AP2813 是一款双路降压恒流驱动器,高效率、外围简单、内置功率管,适用于 5-80V 输入的高精度降压 LED 恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流…

图神经网络+强化学习

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 车辆路径规划问题(VRP)是运筹优化领域最经典的优化问题之一。在此问题中,有若干个客户对某种货物有一定量的需求,车辆可以从仓库取货之后配送到客户手中。客户点与仓库点组成了一…

DSP_TMS320F28377D_一键烧写多核程序

以前在开发和调试TMS320F28377D的双核程序的时候,总是在烧写CPU1程序时,自动把CPU2的程序也烧写了,但往CPU2里面烧写的是CPU1的程序,烧写完进入在线仿真模式的时候,还需要手动重新选择CPU2要烧写的程序,重新…

谈谈Netty线程模型

大家好,我是易安! Netty是一个高性能网络应用框架,应用非常普遍,目前在Java领域里,Netty基本上成为网络程序的标配了。Netty框架功能丰富,也非常复杂,今天我们主要分析Netty框架中的线程模型&am…

【数据分享】2014-2023年全国监测站点的逐年空气质量数据(15个指标\shp\excel格式)

空气质量的好坏反映了空气的污染程度,在各项涉及城市环境的研究中,空气质量都是一个十分重要的指标。空气质量是依据空气中污染物浓度的高低来判断的。 我们发现学者王晓磊在自己的主页里面分享了2014年5月以来的全国范围的到站点的逐时空气质量数据&am…

网络安全--红队资源大合集

红队攻击的生命周期,整个生命周期包括: 信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上再做持久化控制)、在所有攻击结束之后清理并退出战场。 重点提醒:本项目…

JVM内存区域(一)

运行时数据区域 ** 线程私有的: 程序计数器虚拟机栈本地方法栈线程共享的: 线程共享的: 堆方法区直接内存 (非运行时数据区的一部分) 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示…

15-02 身份安全

身份安全——认证 目录管理系统 身份认证 你知道什么:密码、PIN、密码短语你拥有什么:硬令牌、智能卡、USB卡、手机APP指纹、声纹、脸纹、虹膜 授权和访问控制 访问控制 访问控制原则 最小特权:安全管理员禁止访问任何资源默认拒绝&…

【005】C++数据类型之实型(浮点数)、有符号数以及无符号数

C数据类型之实型、有符号数以及无符号数 引言一、实型(浮点数)1.1、实型常量1.2、实型变量 二、有符号数三、无符号数总结 引言 💡 作者简介:专注于C/C高性能程序设计和开发,理论与代码实践结合,让世界没有…

Eolink 出席 QECon 深圳站,共同探讨软件质量和效能发展

5月12日至13日,由 QECon 组委会和深圳市软件行业协会联合主办的「QECon全球软件质量&效能大会」成功召开,作为国内 API 全生命周期解决方案的领军者,Eolink 受邀参加此次大会。 大会中,Eolink SaaS 产品负责人崔嘉杰、高级售…

《思考致富》不应该指望不经历“暂时的失败”便能发财

目录 作者简介 经典摘录 机遇有个狡猾的习惯,喜欢从后门悄悄溜进来,往往还喜欢以灾难或暂时失败的方式乔装露面 离金矿仅有三英尺远 欲望:成就一切的起点(通往致富之路的第一步) 信念:在脑海里目睹并坚…

网络安全萌新先学什么?后学什么?

在选择网络安全行业之前,我们要弄清楚,要问一下自己的内心,自己为什么要进入这个行业?每个人的答案肯定是不一样的。 肯定有人会说:这个行业比很多其他行业更赚钱 有人会说:对网络安全技术非常感兴趣 有人会…

Web3和低代码开发:下一代Web应用开发的合作与创新

Web3作为区块链技术的一部分,被认为是下一代互联网技术的主要方向。与此同时,低代码开发作为快捷而高效的软件创建工具,也一直得到广泛关注。那么,Web3和低代码开发如何合作,激发出下一代Web应用开发的新生力量呢&…

前端性能优化:如何提高页面加载速度和用户体验

第一章:介绍 当今互联网时代,网站的性能对于用户体验至关重要。一个快速加载的网页不仅能提高用户的满意度,还能增加页面的转化率。而在前端开发中,性能优化是一个永恒的话题。本篇博客将为大家分享一些关于前端性能优化的技巧和…

红色元宇宙数字展厅:三维构建身临其境的红色历史之旅

导语:红色,是中国革命的象征,是我们历史中最为壮丽的篇章之一。然而,随着时间的推移,许多珍贵的红色记忆逐渐模糊,年轻一代对于红色历史的认知也渐行渐远。 红色元宇宙数字展厅,作为一种全新的互…

2023年软件测试前景?自动化测试的未来?我的测试之路高歌猛进...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

网络计算模式复习(五)

结构化P2P&#xff1a;直接根据查询内容的关键字定位其索引的存放节点 DHT算法 将内容索引抽象为<K,V>对 K是内容关键字的Hash摘要&#xff1a;KHash(key) V是存放内容的实际位置&#xff0c;例如节点IP地址等所有的<K,V>对组成一张大的Hash表&#xff0c;该表存…

异地远程连接威联通NAS,无需公网IP

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 转载自远程内网穿透的文章&#xff1a;无需公网IP&#xff0c;在外远程访问NAS威联通QNAP【…

当程序员这么多年,为什么我还只会复制粘贴?

如果问程序员&#xff1a;最熟练的快捷键是哪两个&#xff1f; 程序员&#xff08;脱口而出&#xff09;&#xff1a;ctrlc 和 ctrlv &#xff01;即复制和粘贴。 对于为数不少的程序员来说&#xff1a;天下代码不过一个“抄”字&#xff0c;复制和粘贴就是他们创造伟大产品的…

内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线

内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线 1. 前言1.1. 实验背景1.2. 环境准备1.2.1. 环境介绍1.2.2. 环境测试1.2.2.1. 攻击机测试1.2.2.2. Windows20081.2.2.3. Windows20031.2.2.4. Windows20121.2.2.5. Windows7 1.3. 技术介绍1.3.1. 隧道技术1.3.…