Matlab实现⼆进制矩阵转换为⼗进制
⼀.问题描述 
  [1 1 1 0 1
  0 1 1 0 1
  0 0 1 1 0]
每两位3转换为⼀个⼗进制数,共5列,那么转换后是ceil(5/3)=2列。
  [7 1
  6 1
  1 2]
⼆.问题分析
  1.每⼋个字符划分为⼀个⼗进制,nwords=ceil(size(b,2)/8)
  2.按列处理每⾏的字符,只不过1到8是⼀组,为第⼀列;9到17是⼆组,为第2列。
  cb = zeros([size(b,1),nwords],'uint8')
  for(j=1:size(b,2))
  {
    w = ceil(j/8);matlab二进制字符串转数组
    //⽤bitset(A,bit,Value),bit没组都是1到8
    cb(:,w) = bitset(cb(:,w),mod(j-1,8)+1,b(:,j))
  }
三.实现%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function cb = compactbit(b)
%
% b = bits array
% cb = compacted string of bits (using words of 'word' bits)
[nSamples nbits] = size(b);
nwords = ceil(nbits/8);%向上取整(正⽆穷⽅向)压缩bit->word.
cb = zeros([nSamples nwords], 'uint8');
for j = 1:nbits
w = ceil(j/8);
cb(:,w) = bitset(cb(:,w), mod(j-1,8)+1, b(:,j));
end

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。