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),还有两件事要做。z^(-d) 的因子将指数减少 d,然后我们只保留从 0 到 ld 的指数。通过丢弃结果的第一个 d 和最后一个 d 元素,将两者合二为一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]。请注意,它具有 length length(s)-d,正如预期的那样。

于 2015-01-01T20:03:42.140 回答