Matlab矢量到它的二进制表示

时间:2014-08-02 17:16:16

标签: matlab vector binary

我有一个像A:1 3 7 8的矢量 我想构建一个二进制vecor,如B(1 2 3 4 5 6 7 8)                                                    (1 0 1 0 0 0 1 1)

3 个答案:

答案 0 :(得分:3)

您只能使用索引:

B = zeros(1, max(A));
B(A) = 1;

或使用sparse

B = full(sparse(1, A, 1));

这些方法不需要算术运算,因此可能比以前的答案更快。

答案 1 :(得分:1)

怎么样:

binA = sum( de2bi(2.^(A-1)) , 1 ) 

binA =

     1     0     1     0     0     0     1     1

答案 2 :(得分:0)

您可以先将矢量转换为整数(基数为10),

d = sum(A(:).*(10.^[numel(A)-1: -1: 0])(:)) 

然后使用

d转换为二进制
b = de2bi(d)

然后,您可以从b

中提取任意数量的位