Matlab编程技巧:文本文件的读写
在MBD(基于模型的设计)中涉及到了各种各样的文本文件,对文本文件的自动化处理可以大大提高工作效率。本文简单介绍处理文本文件的第一步——导入文本文件到Matlab。
文章目录
- 1 文本文件
- 2 读取文本文件
- 2.1 fscanf
- 2.2 fileread
- 3 写入文本文件
- 4 总结
1 文本文件
会用电脑的人对文本文件都不陌生。能通过记事本或者Notepad++这类编辑器打开,然后能看到里面写的是啥的文件都是文本文件。文本文件在MBD中十分常见,包括:C代码、txt文件、批处理文件、Matlab脚本、dbc文件、编译器的配置文件等等。由此可知,对文本文件的读写经常出现在以下工作场景:
1)手写代码。因为不是所有的C代码都是由Simulink生成出来的,有些非控制策略的功能很难通过Simulink建模。所以或多或少需要一部分代码由人工手写,比如说底层和应用层接口函数、诊断、校验等。
2)生成批处理文件调用编译器。用编译器编译的方式不止是通过人工点击界面中的编译按钮,也可以通过批处理文件调用编译器开放的接口。这一点十分重要,通过批处理文件调用编译器是自动化持续集成的关键。
3)其他各种应用场景。
2 读取文本文件
所谓读取文本文件,就是把一个可以通过记事本打开的文件中的内容,读取到Matlab中的某个变量里。这里讨论的是读取出字符串,因为字符串具备更普遍的意义,数值可以通过字符串转换得到。
首先在当前路径下建立一个demo.txt的文本,随便写点东西,供后面读取。
2.1 fscanf
在Matlab命令行输入如下代码:
>> fid = fopen('demo.txt','r');
>> text = fscanf(fid,'%s');
>> fclose(fid);
>> texttext ='Thisisademofile.Author:chhttty'
可以看出,这几行把文本内容读出来了,保存在了text这个变量中。
等等,好像哪里不对。为啥读出来空格都没了呢?这就是fscanf的不方便之处了,不能很容易地将所有文本内容按照我们所看到的样子读出来。具体原因可以看一下帮助文档。
2.2 fileread
博主推荐使用fileread函数来读文本文档,用起来是真的香。只要一句话就可以读出文本地所有内容。
>> fileread('demo.txt')ans ='This is a demo file.Author:chhttty'
看一下ans里的字符串,把文本原封不动的给搬过来了。然后就可以正则表达式,分割,替换啥的各种花样玩起来了。
稍微提一下另一个函数,如果想要一行一行地处理文本,但是这里读出来是个整个的字符串该怎么办呢?只要用一下splitlines函数就可以拆成每一行,放入一个cell中。
>> splitlines(text)ans =2×1 cell 数组{'This is a demo file.'}{'Author:chhttty' }
然后再用for循环去一个个处理。
3 写入文本文件
写入文本文件没啥好说的,看下面的代码:
>> fid = fopen('demo2.bat','w');
>> fprintf(fid,text);
>> fclose(fid);
运行完以后就把刚刚读出来的字符串写到了demo2.bat文件中了。可以看出,不管后缀是啥都可以读写。
这里注意一下,别忘了用fclose把打开的文件关闭,不然会一致占用。
4 总结
本文很简单的介绍了读写文本的实用方法,后续会结合具体的例子,挖掘文本处理的强大功能。
>>返回个人博客总目录
Matlab编程技巧:文本文件的读写相关推荐
- Matlab编程技巧:打开模型时加载数据字典
本文研究通过回调函数,在打开模型时加载数据字典到工作空间中. 文章目录 1 问题引入 2 简单例程 2.1 模型配置 2.2 数据字典表格 2.3 创建脚本 3 效果演示 4 总结 1 问题引入 在& ...
- Matlab编程技巧:通过Matlab脚本批量修改Simulink模块的大小,背景颜色
Matlab编程技巧:通过M脚本修改Simulink模块的大小,背景颜色 M脚本修改Simulink模块的大小,背景颜色 选取一个Simulink模型,获取模块参数,在命令行输入代码: sysBolc ...
- Matlab编程技巧:通过脚本获取/修改Simulink信号线参数
上一篇博客<Matlab编程技巧:批量获取/修改Simulink模块参数>中,说明了如果通过matlab脚本批量获取/修改Simulink模块参数.具体方法可以参考https://blog ...
- Matlab学习笔记——文本文件的读写
写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 文本文件的读写 fscanf函数和fprintf函数 fmt由%加上格式符组成 文本文件的读写 fscanf函数和 ...
- 30多个实用matlab编程技巧
感谢关注懂科学的程序员公众号!如果公众号文章对您有帮助,别忘了点击分享和"在看"哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言! 今天给大家介绍一些编程小技 ...
- Matlab编程技巧:导入A2L文件
本文研究如何通过Matlab脚本导入A2L文件,并将A2L文件的一些信息写入表格中. 文章目录 1 A2L文件 2 A2L文件的解析 3 将A2L信息导入表格 3.1 A2L中的变量信息 3.2 Ma ...
- Matlab编程技巧:MBD中常用的Matlab函数
在MBD(基于模型开发)中,需要掌握一些常用的函数.这些函数经常用于搭建集成环境.生成手写代码.工具链开发等.恰当地使用函数编写Matlab脚本可以提高MBD工作的自动化程度,提高工作效率. 本文会分 ...
- Matlab编程技巧:通过脚本导入Excel数据字典
本文研究如何将Excel表格中的数据字典导入到Matlab工作空间中,并在建模时使用. 文章目录 1 数据字典的概念及管理方式 2 Excel表格模板建立 3 脚本导入数据字典 3.1 导入方法 3. ...
- Matlab编程技巧:通过Matlab管理git
本文描述通过Matlab管理git的方法,以Matlab2018a版本为例.如果比较熟悉Git的命令行操作,会有比较深的体会. 文章目录 1 克隆代码仓库 2 操作git指令 3 分支操作 4 总结 ...
最新文章
- Redis学习-String
- 金融工程相关问题积累与解决
- [翻译]Triggerless design.md
- Java字符串常用操作
- Linux C中发现无法连接到math.h中的数学函数解决办法
- boost asio io_context 没任务不退出
- 你所坚信的,就是你的生活
- jQuery原型方法first,last,eq,slice源码分析
- 安全加固脚本及解析等保2.0(仅供参考)
- MaxPooling里面的padding
- 南科大计算机系:将开源和企业引入计算机课程教学
- MT8665原理图芯片资料介绍
- 分布式事务解决方案(一)Seata集成和使用
- Linux磁盘配额(EXT4XFS)
- LED亮5秒灭5秒C语言程序代码,单片机【木仓示申吧】_百度贴吧
- 使用Keras构建深度图像搜索引擎
- Altium Designer在由原理图导入PCB图报错:Number of nets in differential pair NET-TX+ is 1 instead of 2
- 启天m420进入不了bios_联想启天M420c装win7及BIOS设置教程(USB驱动可用)
- 基于SSH的可扩展的程序代码源码Web在线评测系统
- 判断两条直线是否相交c语言,计算几何-两条线段是否相交(三种算法)