Matlab中如何将长字符串换行写
来源:互联网 发布:外国人在中国翻译软件 编辑:程序博客网 时间:2024/06/06 03:41
太长不看版
举例如下:
% Port definitionfprintf(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 definitionfprintf(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 ')
。这也是为什么两个子字符串中间至少要有一个空格的原因,如果没有空格就会被连接起来,并且中间多了个单引号。
- Matlab中如何将长字符串换行写
- VS 中 长字符串换行
- vc编辑器写长字符串换行问题
- 如何将字符串写到文件中?
- C++长字符串换行
- vs长字符串换行
- C++长字符串换行
- C++长字符串换行
- 页面中,对于长字符串自动换行的做法
- HTML+CSS中控制长字符串的自动换行问题
- js中动态添加长字符串,并保持换行
- 【C++】C++长字符串换行
- MATLAB中写TXT文件换行的实现
- VC代码书写时,字符串过长如何换行写
- shell如何将文本文件字符串换行后转换为数组
- matlab中图例换行
- CSS将长文字换行的方法
- 如何将Excel数据导入MATLAB中
- C#基础-变量
- python多版本安装package
- Node.js安装
- android程序开机启动
- Find Minimum in Rotated Sorted Array (旋转数组最小值)
- Matlab中如何将长字符串换行写
- 第十四周 项目3:折腾二维数组
- 数据结构——确定一个二叉树是不是另一个二叉树的子树
- Android清单文件属性大全
- android开发EditText的Hint字体默认样式和下载字体样式的适配问题。
- 1003: [ZJOI2006]物流运输
- 解决XCode8 Protocol not available, dumping backtrace问题
- springmvc+mybatis+spring 整合 bootstrap
- sftp