2015-09-24 75 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 

我試過這種方式,但size(D {i,j,1})返回1 * 22 char.Can任何人都可以幫助爲什麼發生這種情況。根據我應該是1 * 8將256 * 2048單元格轉換爲256 * 256單元格,其中每個元素都是1 * 8 char在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

請使用*一個*答案,從而編輯您的前一個,而不是創建一個新的。 – Adriaan

+0

刪除我的情況下工作的空白空間。 C_abs是我使用交叉混沌映射生成的單元格。 –

相關問題