0

Wiedemann 法を実装していますが、理解できなかった重要なポイントがあります。私はここに投稿し、あなたが私を助けてくれることを願っています.これは私の質問です: ここに画像の説明を入力

これが私の解決策です。ただし、matlab でのソリューションについてはよくわかりません

g=[1,2,0,0,2] %coefficient of g(z)
%% compute coefficient of g(z^-1)
g_minus=[]%I don't know how to compute
s=[1,1,0]
g_z=conv(g_minus,s) %applying a polynomial  to the sequence

アップデート: ここに画像の説明を入力 ここに画像の説明を入力

4

1 に答える 1

1

[i] という表記は、z^i の係数を取ることを意味します。定義では、i は 0 から ld までしか実行されないことに注意してください。したがって、 d が l より大きい場合、計算結果は空になります。d=4 と l=3 の例は、この計算の有効な入力ではありません。この論文の実際のアルゴリズムでは、g の次数はシーケンスの長さよりも短くなります。

g(z^(-1)) は多項式ではありませんが (z の負の累乗があります)、逆多項式と密接に関連しています。これは、Ben Voigt がコメントで言及したものです。正確には、 g(z^(-1)) = z^(-d)h(z) ここで、h は で与えられる係数を持つ多項式g(end:-1:1)です。

を計算conv(h,s)したら、あと 2 つのことを行う必要があります。z^(-d) の因数は指数を d だけ減らし、0 から ld までの指数のみを保持します。の結果の最初の d 要素と最後の d 要素を捨てることで、両方を 1 つに結合しconvます。

g = [1 2 0 0 2];
s = [3 1 4 1 5 9 2 6 5];
d = length(g)-1;
c = conv(g(end:-1:1),s);
result = c(d+1:end-d);

結果: [15 27 10 23 33]。予想どおり、 lengthlength(s)-dであることに注意してください。

于 2015-01-01T20:03:42.140 に答える