Matlab向量切片的Python等价

Matlab向量切片的Python等价,matlab,numpy,slice,Matlab,Numpy,Slice,我在Matlab中有以下代码我没有Matlab,它显然是通过二进制值的采样序列来构造整数的: velocity_LUT_10bit = zeros(2^10,1); for n = 1:length(velocity_LUT_10bit), imagAC = bin2dec(num2str(bitget(n-1,9:-1:6))) - bitget(n-1,10)*2^4; % Imaginary part of autocorrelation: signed 5-bit i

我在Matlab中有以下代码我没有Matlab,它显然是通过二进制值的采样序列来构造整数的:

velocity_LUT_10bit = zeros(2^10,1);
for n = 1:length(velocity_LUT_10bit),
    imagAC = bin2dec(num2str(bitget(n-1,9:-1:6))) - bitget(n-1,10)*2^4;       % Imaginary part of autocorrelation: signed 5-bit integer
    realAC = bin2dec(num2str(bitget(n-1,4:-1:1))) - bitget(n-1, 5)*2^4;       % Real part of autocorrelation: signed 5-bit integer
    velocity_LUT_10bit(n) = velNyq_CF*angle((realAC+0.5)/16 + 1i*(imagAC+0.5)/16)/pi;
end;
我无法理解bitget函数。从中,第一个arg是采样序列,而第二个arg指定采样范围,但我对切片x:-y:z的含义感到困惑。我从索引x到z的样本中理解它,从右到左以y的步幅移动。对吗

bin2decnum2strbitgetn-1,9:-1:6的numpy等价物是什么?我知道我应该使用numpy.packbits,但我有点卡住了。

在八度音阶会话中:

>> for n=0:3:15,
   bitget(n,1:1:5)
end
ans =
   0   0   0   0   0
ans =
   1   1   0   0   0
ans =
   0   1   1   0   0
ans =
   1   0   0   1   0
ans =
   0   0   1   1   0
ans =
   1   1   1   1   0
这只是数字的二进制表示形式,带有位的切片选择。Octave/Matlab使用“开始:步骤:停止”语法

其余部分将数字转换为字符串,并从二进制转换为十进制:

>> num2str(bitget(13,5:-1:1))
ans = 0  1  1  0  1
>> bin2dec(num2str(bitget(13,5:-1:1)))
ans =  13
bitgetn-1,9:-1:6必须以相反顺序获取2的第9到第6位幂。所以对于一个最大为2^10-1的数字,它会提取“位”1-4、5、6-9和10

我不熟悉Python/numpy二进制表示法,但这里有一个开始:

>> num2str(bitget(100,10:-1:1))
ans = 0  0  0  1  1  0  0  1  0  0
In [434]: np.binary_repr(100,10)
Out[434]: '0001100100'

谢谢我没有想过尝试在八度音阶中对其进行故障排除。np.binary_repr可能是开始,给出了类似的字符串版本。