【发布时间】:2014-09-25 16:17:47
【问题描述】:
我有一个像 A 的向量:1 3 7 8 我想构造一个二进制向量,例如 B (1 2 3 4 5 6 7 8) (1 0 1 0 0 0 1 1)
【问题讨论】:
我有一个像 A 的向量:1 3 7 8 我想构造一个二进制向量,例如 B (1 2 3 4 5 6 7 8) (1 0 1 0 0 0 1 1)
【问题讨论】:
您可以只使用索引:
B = zeros(1, max(A));
B(A) = 1;
或者使用sparse:
B = full(sparse(1, A, 1));
这些方法不需要算术运算,因此可能比以前的答案更快。
【讨论】:
怎么样:
binA = sum( de2bi(2.^(A-1)) , 1 )
binA =
1 0 1 0 0 0 1 1
【讨论】:
de2bi):使用sum( dec2bin(2.^(A-1))-'0' , 1 )
A 中有零时它不起作用,它在 MATLAB 中有效吗?
A 中的 0 值在 Matlab 中不起作用......而且它也没有意义,是吗? Matlab 索引开始于1
0 ,不是吗?
A 指示的位设置为 1,其余为 0
可以先将向量转换为整数(以10为底),
d = sum(A(:).*(10.^[numel(A)-1: -1: 0])(:))
然后使用
将d 转换为二进制
b = de2bi(d)
然后,您可以从b 中提取任意数量的位
【讨论】:
(:)。您不能像在 Octave 中那样在 Matlab 中链接索引
dec2bin,而 Octave 的方法是 de2bi。 de2bi 如果您有通讯工具箱(如 Luis Mendo),则可以使用。
dec2bin 是标准的,de2bi 来自 Communication System Toolbox。