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_Binary_Octave - Fatal编程技术网

Matlab 十进制到二进制作为双类型数组,而不是字符串

Matlab 十进制到二进制作为双类型数组,而不是字符串,matlab,binary,octave,Matlab,Binary,Octave,到目前为止,我有: data = 14 out = dec2bin(data, 4) 其中: out = 1110 但我想得到这种格式的二进制数: out = [1 1 1 0] 谢谢你的帮助 您正在使用'left-msb'选项查找 data = 14 out = de2bi(data, 4,'left-msb') 这需要通信系统工具箱。或者,将您的原始方法与基本方法结合使用,并添加以下内容: data = 14 out = double( dec2bin(data, 4) ) - 48

到目前为止,我有:

data = 14
out = dec2bin(data, 4)
其中:

out = 1110
但我想得到这种格式的二进制数:

out = [1 1 1 0]
谢谢你的帮助

您正在使用
'left-msb'
选项查找

data = 14
out = de2bi(data, 4,'left-msb')
这需要通信系统工具箱。或者,将您的原始方法与基本方法结合使用,并添加以下内容:

data = 14
out = double( dec2bin(data, 4) ) - 48

还有另一种方法:使用“bitget”:

你要找的是, 功能

它需要通信系统工具箱

如果没有,可以在代码开始时将这些函数定义为:

de2bi = @(x) dec2bin(x)>48;
bi2de = @(x) x*2.^(size(x,2)-1:-1:0)';
测试:

输出:

dec =

    1    2    3    4    5    6    7    8    9   10

bin =

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

dec =

    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
p.S.如果出于某种原因,您根本不想使用
dec2bin
,您可以将
de2bi
函数定义为:

在Matlab/Octave中:

de2bi = @(x)  2.^[(floor(log2(max(x(:)))):-1:1),0];
de2bi = @(x) rem(x(:),2*de2bi(x))>(de2bi(x)-1);
仅在倍频程中(只要倍频程允许匿名函数的默认值):

默认情况下,返回与上一示例中相同的值,但可选的位位置参数可用:

de2bi = @(dec,bit=[(1+floor(log2(max(dec(:))))):-1:2, 1]) rem(dec(:),2.^bit)>(2.^(bit-1)-1);

%Call examples:
x=0:10; 
n=3:-1:1;
de2bi(x)
de2bi(x,n)   % returns only the three least significant bits

p.S.这里提供了更常见的答案:

是的,但这需要使用通信软件包,我不能使用它
dec =

    1    2    3    4    5    6    7    8    9   10

bin =

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

dec =

    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
de2bi = @(x)  2.^[(floor(log2(max(x(:)))):-1:1),0];
de2bi = @(x) rem(x(:),2*de2bi(x))>(de2bi(x)-1);
de2bi = @(dec,bit=[(1+floor(log2(max(dec(:))))):-1:2, 1]) rem(dec(:),2.^bit)>(2.^(bit-1)-1);

%Call examples:
x=0:10; 
n=3:-1:1;
de2bi(x)
de2bi(x,n)   % returns only the three least significant bits