Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab向量及其二进制表示_Matlab_Vector_Binary - Fatal编程技术网

Matlab向量及其二进制表示

Matlab向量及其二进制表示,matlab,vector,binary,Matlab,Vector,Binary,我有一个向量,像a:13778 我想构造一个二进制向量,比如b12345678 1 0 1 0 0 1 1首先可以将向量转换为以10为基数的整数 d = sum(A(:).*(10.^[numel(A)-1: -1: 0])(:)) 然后使用 b = de2bi(d) 然后,您可以从b中提取任意数量的位,如何: binA = sum( de2bi(2.^(A-1)) , 1 ) binA = 1 0 1 0 0 0 1

我有一个向量,像a:13778 我想构造一个二进制向量,比如b12345678
1 0 1 0 0 1 1

首先可以将向量转换为以10为基数的整数

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

b = de2bi(d)
然后,您可以从b中提取任意数量的位,如何:

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

binA =

     1     0     1     0     0     0     1     1

您可以仅使用索引:

B = zeros(1, max(A));
B(A) = 1;
或使用:


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

+1。如果你没有包含de2bi的通信工具箱:使用sum dec2bin2。^A-1-'0',1我面前有八度音阶,当向量A中有零时它不工作,它在MATLAB中工作吗?@vsoftco A中的0值在MATLAB中不工作。。。这也没有什么意义,是吗?Matlab索引从1@LuisMendo,这就是我问的原因,我有一种感觉,OP想要在二进制中转换一个在MATLAB中表示为向量的十进制数,所以原则上你会在里面有0,不是吗?@vsoftco从OP示例来看,目的似乎是:将a表示的位设置为1,剩下的留为零,可能是最后一个:。在Matlab中不能像在OctaveAlso中那样链接索引,Matlab的方法是,而Octave的方法是de2bi。如果你有通讯工具箱a láLuis Mendo,de2bi就可以使用。@rayryeng,不,MATLAB两者都有,dec2bin是标准的,de2bi出现在通讯系统工具箱中。@vsoftco-在你发布消息之前我纠正了自己:+1-这对我来说是最优雅的解决方案。。。还有我自己会想到的那个
B = full(sparse(1, A, 1));