首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将二进制数字写入文本文件[MATLAB]

将二进制数字写入文本文件[MATLAB]
EN

Stack Overflow用户
提问于 2013-11-29 13:32:42
回答 3查看 4.5K关注 0票数 0

我想用Matlab为VHDL测试平台创建一个具有随机8位二进制数的输入文件。

代码语言:javascript
复制
%create random 10 decimal number
a = randi ( [0 255], 10 , 1 ); 
display(a);
%convert to 8bit binary
a=dec2bin(a,8);
display(a); 
%write to textfile
fid=fopen('eventsIn.txt','wt'); 
fprintf(fid,'%s\n',a); 
fclose(fid);

如何确保输出变成

代码语言:javascript
复制
1010100
1100100
0010100
0111101
0000110

而不是这种格式?

代码语言:javascript
复制
10101001100100001010001111010000110010011110111000101011101101101110100100100010
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-29 15:14:56

你可以用你的方法来做这件事,只改变两件事:

  1. 如果a的每一行都是一个应该在不同行中写入的数字,那么在将其输入fprintf之前,您应该转置a。这是因为fprintf(fid,'%s\n',x)读取x的第一列,然后读取第二列等等。
  2. a.'的每一列末尾(即新行或新行)添加一个回车(ASCII代码13)或行提要(ASCII代码10)或两者。作为附带结果,您不需要\n格式的fprintf字符串。

所以,用

代码语言:javascript
复制
fprintf(fid, '%s', [ a.'; repmat(char(13), 1, size(a,1)) ] ) %// CR only

代码语言:javascript
复制
fprintf(fid, '%s', [a.'; repmat(char([10; 13]), 1, size(a,1))] ) %// LF and CR
票数 0
EN

Stack Overflow用户

发布于 2013-11-29 14:31:06

编辑

先试试这个:

代码语言:javascript
复制
dlmwrite('output.txt', b, '')

您目前似乎要做的是编写所有数据,然后追加一个换行符。

有几种方法可以解决这个问题。这是一个简单的问题:

在这些行上执行for循环,并在每一行后面追加一条新行。

如果这仍然不起作用,您可以尝试使用\r\n而不是\n

票数 0
EN

Stack Overflow用户

发布于 2013-11-29 15:15:35

您的a是一个二维字符数组,您希望被解释为字符串序列。然而,fprintf(fid,'%s\n',a)只是把它当作一个大字符串来处理。正如丹尼斯·贾赫鲁丁()所写,有几种方法可以实现这一点。我觉得这个很简单:

将二维字符数组转换为字符串的单元格数组:

代码语言:javascript
复制
a = cellstr(a);

将其作为(隐式)参数序列提供给fprintf

代码语言:javascript
复制
fprintf('%s\n', a{:})

这样,就不需要编写循环程序了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20287007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档