dev*_*vin 3 matlab bit-manipulation vector data-conversion unsigned-integer
我有一个包含值0,1,2和3的向量.我想要做的是从每个从这个向量中提取的16个元素集合中取下两位,并将它们全部附加在一起得到一个uint32.有人知道一个简单的方法吗?
后续:如果向量中的元素数不是16的整数倍,该怎么办?
这是一个矢量化版本:
v = floor(rand(64,1)*4);
nWord = size(v,1)/16;
sum(reshape([bitget(v,2) bitget(v,1)]',[32 nWord]).*repmat(2.^(31:(-1):0)',[1 nWord ]))
Run Code Online (Sandbox Code Playgroud)