任何基数的 Matlab/Octave bitget 函数 [英] Matlab/Octave bitget function for any base

查看:86
本文介绍了任何基数的 Matlab/Octave bitget 函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

需要像 bitget 这样的函数,但适用于任何基础.

Need function like bitget, but for any base.

也很高兴:

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

推荐答案

  1. Matlab 的实现(对于 Octave 也可以,但我推荐第二个选项):

  1. Implementaion for Matlab (for Octave will work as well, but I recommend the 2nd option):

% 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 覆盖功能(见第二个选项)

    这篇关于任何基数的 Matlab/Octave bitget 函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆