我编写了以下matlab代码,以便为一维数组中的每个元素获取8个lsb位。
clc;
clear all;
close all;
sum=uint32(rand(1,80));
sumf=uint8(zeros(1,80));
for i=1:80
sumf(1,i)=bitget(sum(1,i),8:-1:1,'uint32');
end
但是,当我跑步时,出现以下错误
Assignment has more non-singleton rhs dimensions than
non-singleton subscripts
Error in Untitled2 (line 11)
sumf(1,i)=bitget(sum(1,i),8:-1:1,'uint32');
对消除此错误有什么建议吗?我究竟做错了什么
您的代码有很多问题:
my_uint32 = uint32(rand(1,80))
不生成随机整数。它会生成1x80的uint32数组,该数组可以为0或1,具体取决于结果rand
返回的是double之上还是below之下.5
。[0,0,0,0,0,0,0,1]
。您不能将矢量分配给单个标量的矩阵中的点。sum
是matlab中的标准函数。尽管可以将其用作变量,但是样式较差并且可能会造成混淆。
`
我将使用按位and
提取8个最低有效数字:
random_uint32s = uint32(floor(rand(1, 80) * (2^32 - 1)));
lsd8 = bitand(random_uint32s, 255); %255 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128
my_uint8 = uint8(lsd8); % if you really want it in a uint8 type for some weird reason?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句