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必须是整数类型名称。
答案 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的二进制表示是我的二进制表示的左旋转。