【问题标题】:Matlab/Octave bitget function for any base适用于任何基础的 Matlab/Octave bitget 函数
【发布时间】:2021-07-11 14:08:26
【问题描述】:

需要类似 bitget 的函数,但适用于任何基础。

如果有也不错:

  1. 数组输入和数组位选择
  2. 匿名函数

【问题讨论】:

    标签: matlab binary octave numeric base


    【解决方案1】:
    1. Matlab 的实现(Octave 也可以,但我推荐第二个选项):

      % Anonymous function digget
      % dig = digget(dec, base, pos)                
      %   dig  - returns the value of the digits in positions (pos) for numbers (dec)
      %          coverted to the defined base (for base=2 behaves similar to bitget) 
      %   dec  - initial decimal numbers vector
      %   base - base to convert (for binary base = 2 )
      %   pos  - array of positions 
      %          if pos = [(ceil( log2(max(dec(:)))/log2(base)) ):-1:1] 
      %          behaves similar as dec2base function
      %
      % Examples:
      % dig = digget(1:8, 2, 2:-1:1)
      %
      % dig =
      %
      %   0   1
      %   1   0
      %   1   1
      %   0   0
      %   0   1
      %   1   0
      %   1   1
      %   0   0
      % 
      %
      % dig = digget(8:15, 13, 3:-1:1)
      %
      % dig =
      %
      %    0    0    8
      %    0    0    9
      %    0    0   10
      %    0    0   11
      %    0    0   12
      %    0    1    0
      %    0    1    1
      %    0    1    2
      
      digget = @(dec,base,pbit) sum(rem(dec(:),base.*pbit)>= permute((1:base-1)'*pbit,[3,2,1]),3);
      digget = @(dec,base, bit) digget(dec,base,base.^(bit-1));
      
    2. Octave 的实现: 就 Octave 支持内联函数的默认值而言,它完全被 de2bs function 覆盖(参见第二个选项)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2020-03-17
      相关资源
      最近更新 更多