2015-11-19 4 views
0

Я хотел бы преобразовать двоичный вектор из 24 битов в одной строке.Binary вектор в строку

Например, я должен получить строку: '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

Try:

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

A = 101010101010101010101010 
+0

спасибо, это работает отлично. – ImbaBalboa

+0

Отлично! Я бы добавил объяснение, почему 'num2str' добавляет 2 пробела, но, честно говоря, я понятия не имею, почему они это сделали. – beaker

4

Это потому, что вы также включая пробелы в конечном итоге. стакан в своем ответе выше предложил правильный способ сделать это, используя спецификатор формата с num2str или sprintf. Однако, если ваша строка просто состоит из 0/1, другой метод, который я могу предложить, чтобы добавить 48, чтобы все ваши номера, затем отливали с char:

A = char(binary_vector + 48); 

код ASCII для 0 и 1 составляет 48 и 49 соответственно, поэтому при добавлении 48 ко всем номерам, а затем использовать char, вы бы представляя каждое число как их ASCII-эквиваленты, превращая ваш номер в строку 0/1.

что-то более удобным для чтения может быть:

A = char(binary_vector + '0'); 

В '0' получает соединялись в его эквивалент double значения, что 48, как это код ASCII для 0. Когда вы что-то добавить к double, что и binary_vector является - вектор doubles, тип преобразуется в эквивалентное double типа. Это зависит от ваших предпочтений, но я использую первый из привычки из-за игры в гольф.

Получает:

>> A 

A = 

101010101010101010101010 
+0

Я не понимаю, почему заполнение столбцов не является документированным поведением. – excaza

+0

@excaza Я действительно не знаю, чтобы быть честным. – rayryeng

+0

'binary_vector + '0'' может быть более читаемым. – beaker

 Смежные вопросы

  • Нет связанных вопросов^_^