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

时间:2013-11-29 13:32:43

标签: matlab

我想使用Matlab为VHDL testbench创建一个带有随机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

3 个答案:

答案 0 :(得分:0)

修改

首先尝试这个:

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

您目前的目的是编写所有数据,然后附加换行符。

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

在线上进行for循环写作,并在每一行后添加换行符。

如果仍然无效,您可以尝试使用\r\n代替\n

答案 1 :(得分:0)

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

  1. 如果a的每个是一个应该写在不同行中的数字,那么在将a提供给fprintf之前,您应该转置fprintf(fid,'%s\n',x) }。这是因为x读取a.'的第一个,然后是第二列等。

  2. \n的每一行的末尾添加回车符(ASCII代码13)或换行符(ASCII代码10)或两者(即,在新行或两个新行中) 。作为副作用,您不需要格式字符串fprintf中的fprintf(fid, '%s', [ a.'; repmat(char(13), 1, size(a,1)) ] ) %// CR only

  3. 所以,使用

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

    {{1}}

答案 2 :(得分:0)

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

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

a = cellstr(a);

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

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

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