【问题标题】:Convert a vector of binary numbers into a vector of decimals将二进制数向量转换为小数向量
【发布时间】:2018-09-22 03:26:52
【问题描述】:

从二进制数 b 到十进制数 d 的(希望是有效的)转换是

d = sum(b.*2.^(numel(b)-1:-1:0)) + 1

我如何有效地(阅读:不使用 for 循环)将二进制数向量 bvec例如 bvec = logical([0 1;1 0;1 1]) 中的三个二进制数转换为十进制数向量?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    使用bin2dec

    >> str = reshape('0001011100110001', 8, [])'
    
    str =
    
      2×8 char array
    
        '00010111'
        '00110001'
    
    >> bin2dec(str)
    
    ans =
    
        23
        49
    

    注意- Matlab 是列优先的,所以如果不小心重新塑造一个字符串可能会导致意想不到的结果:

    >> abc = 'abcdefghijklmnop';
    >> reshape(abc, [], 8) % does not maintain original order
    
    ans =
    
      2×8 char array
    
        'acegikmo'
        'bdfhjlnp'
    
    >> reshape(abc, 8, [])' % maintains original order
    
    ans =
    
      2×8 char array
    
        'abcdefgh'
        'ijklmnop'
    

    【讨论】:

      猜你喜欢
      • 2013-09-27
      • 2017-01-31
      • 2012-08-18
      • 1970-01-01
      • 2011-08-10
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多