2015-11-19 60 views
0

我想将24位的二进制向量转换为单个字符串。从这个载体'101010101010101010101010'字符串的二进制向量

举例来说,我应该得到的字符串[1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0]

我尝试这样做:

binary_vector = [1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0]; 
A = num2str(binary_vector); 
l = length(A); 

我获得:

A = 

1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 


l = 

    70 

我也不是什么明白为什么我的长度为A是70?不应该24?

回答

1

尝试:

A = num2str(binary_vector,'%d') 
or 
A = sprintf('%d',binary_vector); 

A = 101010101010101010101010 
+0

非常感谢,它完美。 – ImbaBalboa

+0

太棒了!我会添加一个解释,为什么'num2str'增加2个空格,但说实话,我不知道他们为什么这样做。 – beaker

4

那是因为你还包括在最终结果中的空间。烧杯在他上面的答案中提出了使用格式说明符num2strsprintf的正确方法。但是,如果你的字符串只是由0/1,另一种方法,我可以建议是增加48到所有的数字,然后用char投:

A = char(binary_vector + 48); 

01的ASCII码是48和49分别所以如果您将所有数字都加上48,然后使用char,那么您会将每个数字表示为它们的ASCII等效数字,从而将您的数字转换为一串0/1

东西更可读的可以是:

A = char(binary_vector + '0'); 

'0'被合并成其等效double值,它是48为为0的ASCII码。当您向doublebinary_vector是一个doubles的向量)添加某些内容时,类型将转换为其等效的double类型。这取决于你的偏好,但因为代码打高尔夫,我使用了第一个习惯。

我们得到:

>> A 

A = 

101010101010101010101010 
+0

我不明白为什么填充列不是记录的行为。 – excaza

+0

@excaza我真的不知道说实话。 – rayryeng

+0

'binary_vector +'0''可能更具可读性。 – beaker