首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 23-09-22 00:45
  • 2297
  • 12962
blog.csdn.net

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

text =

    'Thisisademofile.Author:chhttty'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可以看出,这几行把文本内容读出来了,保存在了text这个变量中。

等等,好像哪里不对。为啥读出来空格都没了呢?这就是fscanf的不方便之处了,不能很容易地将所有文本内容按照我们所看到的样子读出来。具体原因可以看一下帮助文档。

2.2 fileread

博主推荐使用fileread函数来读文本文档,用起来是真的香。只要一句话就可以读出文本地所有内容。

>> fileread('demo.txt')

ans =

    'This is a demo file.
     Author:chhttty'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

看一下ans里的字符串,把文本原封不动的给搬过来了。然后就可以正则表达式,分割,替换啥的各种花样玩起来了。

稍微提一下另一个函数,如果想要一行一行地处理文本,但是这里读出来是个整个的字符串该怎么办呢?只要用一下splitlines函数就可以拆成每一行,放入一个cell中。

>> splitlines(text)

ans =

  2×1 cell 数组

    {'This is a demo file.'}
    {'Author:chhttty'      }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后再用for循环去一个个处理。

3 写入文本文件

写入文本文件没啥好说的,看下面的代码:

>> fid = fopen('demo2.bat','w');
>> fprintf(fid,text);
>> fclose(fid);
  • 1
  • 2
  • 3

运行完以后就把刚刚读出来的字符串写到了demo2.bat文件中了。可以看出,不管后缀是啥都可以读写。
在这里插入图片描述
这里注意一下,别忘了用fclose把打开的文件关闭,不然会一致占用。

4 总结

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

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/107006756"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top