我需要将零填充到二进制数的特定位置。循环二进制数的数组形式,例如dec2bin(43)
添加零并调整大小听起来像是轮子的重新发明。
如何在Matlab中有效地将零填充到二进制数?
Looping
positions=[1,3,6];
x=de2bi(43);
xx=flip(x);
kk=1;
for ii=1:length(x)+length(positions)
if isequal(positions(kk),xx(ii))
%Transfer the tail from ii by one index ahead,
%left out here because I think my method is bad!
x(ii)=0;
positions=positions+1; %Increase positions by one now due to one padding
kk=kk+1;
end
end
这感觉太多了:基本上如何在 Y 之前得到 0,比如从 xxxxYabcd 到 xxxx0Yabcd,其中 xxxxYabcd 是二进制数?
Example
Input
101011, (1,3,6)
Output
100100110
1x010x11x(用 x 插入零的位置更清楚地显示零的位置)
虽然概念上没有太大改进,但以下内容将在预填充矩阵上自动重新索引和分配旧值:
>> xx
xx =
1 0 1 0 1 1
nPads = length(positions);
nPadsShifts = 1:nPads;
y = ones(1, length(xx) + nPads); % re-indexing on the new array
y(positions + nPadsShifts) = 0; % padding values
y(y==1) = xx; % set original bit values
>> y
y =
1 0 0 1 0 0 1 1 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)