why bitand function is not running even i specified the assumedtype value still error comes

1 view (last 30 days)
for i = 1:2^samples-2
j = bitset(bitshift(i,1),1,bitget(i,samples)); %rotate left
numt = sum(bitget(bitxor(i,j),1:samples)); %number of 1->0 and 0->1 transitions
if numt == 2 %Uniform pattern
n=sum(bitget(i,1:samples)); %Number of 1-bits
c= bitcmp(j,'uint8');
b=bitand(i,c,'unit64');
r=find(bitget( b,1:samples)); %Rotation index of the bit pattern
r=mod( floor(n/2)+r , samples);
index = (n-1)*samples + r;
table(i+1) = index;
else %Non-uniform
table(i+1) = newMax - 1;
end
end
Here samples=8;

Answers (1)

Walter Roberson
Walter Roberson on 13 Sep 2018
uint64 not unit64
  1 Comment
Guillaume
Guillaume on 13 Sep 2018

Considering that c is limited to 8 bits, might as well make that uint8 for the bitand as well.

Note that j should be limited to 8 bits prior to the bitcmp otherwise bitcmp will throw an error for larger i (e.g. when i = 207), so:

j = mod(j, 256);

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!