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
答案 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