0

コードはMATLAB用であり、彼らが何をしようとしているのかを正確に理解したい. 私はmatlabが初めてなので、アドバイスが必要です。助けてください

function [key] = keyGen(n)
n = n*8;
% n = 2048*2048*16;
% n = 24 * 24 * 8;
bin_x = zeros(n,1,'uint8');
r = 3.9999998;
bin_x_N_Minus_1 =  0.300001;
x_N = 0;
tic

for ind = 2 : n
     x_N = 1 - 2* bin_x_N_Minus_1 * bin_x_N_Minus_1;    
      if (x_N > 0.0)
         bin_x(ind-1) = 1;
      end 
        bin_x_N_Minus_1 =  x_N;

      end
toc
%save bin_sec bin_x;
t = uint8(0);
key = zeros(n/8,1,'uint8');
for ind1 = 1 : n/8

    for ind2 = 1 : 8
    key(ind1) = key(ind1) + bin_x(ind2*ind1)* 2 ^ (ind2-1);
    end

end
4

1 に答える 1

0

パラメータnはキーのバイト数です。n*8それをビット数に変換することです。bin_xキーのバイナリ表現を格納するために使用されます。bin_x_N_Minus_1 は、次のビットを計算するために使用する値です。

最初の for ループでは、キーのビットをループします (最初のビットは常に 0 です)。その式を使用して x_N を計算します (bin_x_N_Minus_1 は x_N の前の値です)。x_N が正の場合、キーの対応するビットは 1 であり、それ以外の場合はゼロです。

tictocこの for ループにかかる時間を計測するために使用されます。

2 番目の for ループは、キーのビットをバイトに変換し、出力配列 に格納しますkey。の K 番目のエントリkeyは、K から始まる bin_x の (N/8) 番目のエントリごとに取得することによって表される 8 ビット数です。

変数rtは使用されません。

于 2012-04-23T12:28:55.510 に答える