【发布时间】:2021-07-11 14:08:26
【问题描述】:
需要类似 bitget 的函数,但适用于任何基础。
如果有也不错:
- 数组输入和数组位选择
- 匿名函数
【问题讨论】:
标签: matlab binary octave numeric base
需要类似 bitget 的函数,但适用于任何基础。
如果有也不错:
【问题讨论】:
标签: matlab binary octave numeric base
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));
Octave 的实现:
就 Octave 支持内联函数的默认值而言,它完全被 de2bs
function 覆盖(参见第二个选项)
【讨论】: