将256 * 2048单元转换为256 * 256单元,其中每个元素在matlab中为1 * 8 char

时间:2015-09-24 10:22:33

标签: matlab

P=8;
l=8*ones(2048/8,1);
M=1;
m=M*ones(256/1,1);
Chaos_bin=mat2cell(C_abs,m',l');
%C_abs is 256*2048 cell of binary bits
%size(Chaos_bin)
for i=1:256
  for j=1:256
    D{i,j,1}=num2str(Chaos_bin{i,j});
    %class(D{i,j,1})
    size(D{i,j,1})
   end
end

我试过这种方式,但是尺寸(D {i,j,1})返回1 * 22 char.Can任何人都可以帮助为什么会发生这种情况。据我所知它应该是1 * 8

1 个答案:

答案 0 :(得分:0)

这是因为您的位之间出现了额外的空格。例如:

>> Chaos_bin{1,1}

ans =

1     1     1     0     0     1     1     1

>> num2str(Chaos_bin{1,1})

ans =

1  1  1  0  0  1  1  1

So you need to remove extra blank spaces between the bits using:

>> DD = num2str(Chaos_bin{1,1});
>> Blank = isspace(DD);
>> DD(Blank)=[];
>> DD

DD =

11100111

此外,我认为您的C_abs不是单元格,而是数字普通矩阵。

您可能需要这样的代码:

P=8;
l=8*ones(2048/8,1);
M=1;
m=M*ones(256/1,1);
C_abs=round(rand(256,2048));
Chaos_bin=mat2cell(C_abs,m',l');
clear D
for i=1:256
    for j=1:256
        TMP=num2str(Chaos_bin{i,j});
        BLANK=isspace(TMP);
        TMP(BLANK)=[];
        D{i,j,1}=TMP;
    end
end