Matlab中如何实现将长字符串换行写

 更新时间:2024年01月04日 14:45:52   作者:Joyce_Ng  
这篇文章主要介绍了Matlab中如何实现将长字符串换行写问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

太长不看版

举例如下:

% Port definition
fprintf(fID,[...
    '\n'...
    'input clk;'                    '\n'...
    'input rst_n;'                  '\n'...
    'input [%d:0] msg;'             '\n'...%row-1
    'input in_valid;'               '\n'...
    'output reg [%d:0] codeword;'   '\n'...%col-1
    'output reg out_valid;'         '\n'...
    ],row-1,col-1);
  • 加上中括号;
  • 将长字符串分割成多个子字符串;
  • 子字符串之间至少隔一个空格;
  • 换行符用...

正文

最近在搞毕设的东西,其中有一个需要写很麻烦的verilog文件。

麻烦但是却不复杂,LDPC的编码器,大概就是一个200多bits宽的输入信号,500多bit宽的输出信号,输出每个bit都是由某些输入的bit进行相同的运算得到的,用一个200多*500多的矩阵表示对应关系。

如果要单纯写verilog,会死人的,如果在verilog里写生成逻辑,又要占用很大的内存来存放生成矩阵,而且逻辑难写。于是就想到用Matlab代码来生成verilog代码。

Matlab里有fprintf函数可以输出数据到文件。

举个栗子:

fprintf(fID,'Hello world!');

就可以把“Hello world!”输出到fID对应的文件中。

打开文件的函数是fID = fopen('filepath/filename.postfix','w');其中w表示写入,如果是读取则换成r,更多用法请help fopen

那么问题来了,如果我把verilog代码的每一行分别用一个fprintf输出,那么我的.m文件就会充斥着一大堆fprintf,我这个强迫症对这种高度重复的代码简直不能忍。

但是如果我把每个功能块单独写在一个fprintf里,可读性确实高很多,但是fprintf那行就会很长,同样不能忍,并且修改的时候会非常痛苦!

于是我就去找有没有类似Linux脚本中‘\’的换行符,让解释器把多行代码当成一行去执行。

确实有这个换行符,

... ←三个点就是Matlab里的换行符。可以将该行的尾部和下一行的头部连接起来。

但是另一个问题就出来了,这个换行符没办法用在字符串中间,我把一整块的代码当成一个字符串,如果中间加上换行符,那么解释器会把换行符也当做要输出的内容,一起输出去了。

由于 fprintf 的参数分别为:文件handler、输出array、输出数据(如有)。

举栗子:

fprintf( fID, 'data1: %d\n', data1);

其中中间的字符串会被当成一个只有一个元素的array。

所以解决方法就来了,只要把中间的array多加几个元素,就可以分割长字符串,并在子字符串之间添加换行符。

举栗子:

% Port definition
fprintf(fID,[...
    '\n'...
    'input clk;'                    '\n'...
    'input rst_n;'                  '\n'...
    'input [%d:0] msg;'             '\n'...%row-1
    'input in_valid;'               '\n'...
    'output reg [%d:0] codeword;'   '\n'...%col-1
    'output reg out_valid;'         '\n'...
    ],row-1,col-1);

用单引号括起来的每一个小字符串会被解释为输出array的一个元素,子字符串之间用空格(可多个,至少一个) 或逗号隔开,即一个单行的矩阵(array)。

中括号必不可少,是将各子字符串结合为一个array的标识。

另外因为verilog里经常需要输出类似 3b'101之类的东西,而单引号会被当做元素的起/止符。想要输出单引号,就需要连续打2个单引号。

比如:

fprintf(fID, 'outdata <= 3''b101 ')

这也是为什么两个子字符串中间至少要有一个空格的原因,如果没有空格就会被连接起来,并且中间多了个单引号。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 字典的使用详解及实例代码

    Python 字典的使用详解及实例代码

    今天小编帮大家简单介绍下Python的一种数据结构: 字典,字典是 另一种可变容器模型,且可存储任意类型对象,它用于存放具有映射关系的数据,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-11-11
  • 关于Python中的空值问题及解决

    关于Python中的空值问题及解决

    这篇文章主要介绍了关于Python中的空值问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Python+ChatGPT制作一个AI实用百宝箱

    Python+ChatGPT制作一个AI实用百宝箱

    ChatGPT最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利。本文就来用Python和ChatGPT制作一个AI实用百宝箱吧
    2023-02-02
  • Python 保持登录状态进行接口测试的方法示例

    Python 保持登录状态进行接口测试的方法示例

    这篇文章主要介绍了Python 保持登录状态进行接口测试的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-08-08
  • 在SAE上部署Python的Django框架的一些问题汇总

    在SAE上部署Python的Django框架的一些问题汇总

    这篇文章主要介绍了在SAE上部署Python的Django框架的一些问题汇总,SAE是新浪的一个在线APP部署平台,并且对Python应用提供相关支持,需要的朋友可以参考下
    2015-05-05
  • Django框架实现的分页demo示例

    Django框架实现的分页demo示例

    这篇文章主要介绍了Django框架实现的分页demo,结合实例形式分析了Django框架分页的步骤、原理、相关操作技巧与注意事项,需要的朋友可以参考下
    2019-05-05
  • python中内置类型添加属性问题详解

    python中内置类型添加属性问题详解

    这篇文章主要介绍了python中内置类型添加属性问题详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Python中SyntaxError: invalid syntax报错解决

    Python中SyntaxError: invalid syntax报错解决

    在编写Python代码时,常见的SyntaxError错误通常由括号不匹配、关键字拼写错误或不正确的缩进引起,本文详细介绍了错误原因及多种解决方案,包括检查括号、关键字,以及使用IDE的语法检查功能等,感兴趣的可以了解一下
    2024-09-09
  • 用实例解释Python中的继承和多态的概念

    用实例解释Python中的继承和多态的概念

    这篇文章主要介绍了用实例解释Python中的继承和多态的概念,继承和多台是学习每一门面对对象的编程语言时都必须掌握的重要知识,需要的朋友可以参考下
    2015-04-04
  • Python模块结构与布局操作方法实例分析

    Python模块结构与布局操作方法实例分析

    这篇文章主要介绍了Python模块结构与布局操作方法,结合实例形式分析了Python模块与布局的相关概念、使用方法与相关注意事项,需要的朋友可以参考下
    2017-07-07

最新评论