2015-05-03 56 views
0

以下代碼運行速度非常慢,輸入是兩個矩陣大小爲256x256x3。任何人都可以請告訴我如何提高對在同一Matlab相關更快代碼示例

[row col byt]=size(img_encryp); 
    decryp_value=zeros(row,col,3); 
    img_encryp = cast(img_encryp,'int32'); 
    ca1=cast(ca1,'int32'); 
    for i=1:row 
     for j=1:col 
      for z=1:3 

       % Encryption 
       c=de2bi(img_encryp(i,j,z),16); 
       d=de2bi(ca1(i,j,z),16); 

       for k=1:incr:8 
        c1=bi2de(c(k:k+incr-1)); 
        c2=bi2de(d(k:k+incr-1)); 
        result=mod((c1-c2),2.^incr); 
        temp_bin(k:k+incr-1)=de2bi(result,incr); 
       end 
       decryp_value(i,j,z)=bi2de(temp_bin); 

      end 

     end 
+0

如果這與您之前的問題相同:http://stackoverflow.com/questions/29997900/matlab-related-faster-code,您應該編輯該問題以包含您的代碼而不是打開一個新代碼。 – beaker

+1

這看起來好像可以通過明智地使用['bitand'和'bitor']來更高效地實現數量級(http://uk.mathworks.com/help/matlab/bit-wise-operations.html)直接在帶有合適位掩碼的整數上,但沒有任何循環內代碼的意圖做什麼_explanation,很難弄清楚,特別是在不知道'incr'的允許值等缺失細節的情況下。 – Notlikethat

回答

0

轉換二元矢量成十進制數函數(bi2dede2bi)需要太多的時間來運行。在我看來,如果你使用b2dd2b這個link中提供的函數將大大提高你的代碼的性能。