Matlab 2016a中的Bitshift错误

时间:2016-06-25 07:03:09

标签: matlab matlab-compiler

if strcmp(mappingtype,'u2') %Uniform 2
  newMax = samples*(samples-1) + 3; 
  for i = 0:2^samples-1
    j = bitset(bitshift(i,1,samples),1,bitget(i,samples));

在尝试运行程序时,我在函数中收到以下错误。

使用bitshift时出错 ASSUMEDTYPE必须是整数类型名称。

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。我知道这是一个老问题,但我在这里张贴以防其他人有类似的问题。 这是因为Matlab已停止使用三个数字参数支持bitshift操作。所以不要使用
bitshift(i,1,samples)使用bitand(bitshift(i,1),2^samples-1)

reference- https://www.reddit.com/r/matlab/comments/1ttat5/help_me_with_bitshifting_and_bit_truncation/

答案 1 :(得分:0)

正如我评论的那样,只需使用两个参数通过使用bitshift(i,samples)计算i * 2 ^样本

或者,使用bitshift(1,samples)来获得2 ^个样本。

第三个参数是假设数据类型,它应该像'int16'或'int8',而不是用于计算的变量。

答案 2 :(得分:0)

除非这是Octave代码而不是Matlab代码。在Octave的bitshift运算符中,允许3个参数。我试过这个,结果是j的二进制表示是我的二进制表示的左旋转。