【问题标题】:Write binary number to text file [MATLAB]将二进制数写入文本文件 [MATLAB]
【发布时间】:2013-12-03 14:00:48
【问题描述】:

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

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

我想如何确保输出变成

1010100
1100100
0010100
0111101
0000110

而不是这种格式?

10101001100100001010001111010000110010011110111000101011101101101110100100100010

【问题讨论】:

  • 你是用记事本还是记事本++打开的?或任何其他取决于操作系统。
  • 我用的是windows,notepad和notepad++都试过了..但还是单行输出

标签: matlab


【解决方案1】:

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

    1234563那是因为fprintf(fid,'%s\n',x) 读取x 的第一列,然后读取第二列等等。
  1. a.' 的每一列的末尾添加回车符(ASCII 代码 13)或换行符(ASCII 代码 10)或两者(即在新行或两个新行中)。因此,您不需要fprintf 格式字符串中的\n

所以,使用

fprintf(fid, '%s', [ a.'; repmat(char(13), 1, size(a,1)) ] ) %// CR only

fprintf(fid, '%s', [a.'; repmat(char([10; 13]), 1, size(a,1))] ) %// LF and CR

【讨论】:

  • 嗯,但是这样你每行都以 CR 结束,最后你有一个额外的 LF?!
  • @A.Donda 谢谢,现在我明白你的意思了。我已经从格式字符串中删除了\n
  • @khairul 如果答案符合您的要求,请考虑将其中一个答案标记为“已接受”
【解决方案2】:

编辑

先试试这个:

dlmwrite('output.txt', b, '')

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

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

在每行的 for 循环中进行写作,并在每行之后添加一个换行符。

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

【讨论】:

    【解决方案3】:

    您的a 是一个二维字符数组,您希望将其解释为字符串序列。但是,fprintf(fid,'%s\n',a) 只是将其作为一个大字符串处理。正如 Dennis Jaheruddin 所写,有几种方法可以实现这一目标。我觉得这个很简单:

    将二维字符数组转换为字符串元胞数组:

    a = cellstr(a);
    

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

    fprintf('%s\n', a{:})
    

    这样,您不需要编写循环。

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2013-08-18
      • 2011-02-04
      • 2022-01-04
      • 2013-06-22
      • 1970-01-01
      • 2011-12-24
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多