2015-09-24 3 views
0
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преобразования 256 * 2048 клеток до 256 * 256 клеток, где каждый элемент 1 * 8 знаков в MATLAB

+0

Если 'C_abs' действительно ячейка размером' 256 * 2048', то размер 'D {I, J, 1}' равно до размера 'Chaos_bin {i, j}', преобразованного в строку. Это означает, что если результирующий размер '[1 22]', то 'Chaos_bin {i, j}' не является двоичным, а числом с 22 цифрами. Вы уверены, что ваша ячейка 'Chaos_bin' содержит то, что, по вашему мнению, содержит? И тогда есть другие проблемы, но это нужно решать в первую очередь. –

ответ

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 
+1

Пожалуйста, используйте * one * answer, таким образом отредактируйте свой предыдущий, а не создайте новый. – Adriaan

+0

Удаление пробела в моем случае. C_abs - это только ядро, сгенерированное с использованием перекрестной хаотической карты. –

Смежные вопросы