Matlab编程技巧:文本文件的读写

在MBD(基于模型的设计)中涉及到了各种各样的文本文件,对文本文件的自动化处理可以大大提高工作效率。本文简单介绍处理文本文件的第一步——导入文本文件到Matlab。

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);
>> text

text =

    '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 总结

本文很简单的介绍了读写文本的实用方法,后续会结合具体的例子,挖掘文本处理的强大功能。

>>返回个人博客总目录

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值