如何将多项式应用于序列

时间:2014-12-31 03:28:24

标签: matlab matrix polynomials

我正在实施Wiedemann方法,它有一个我不明白的关键点。我在这里发帖,希望你能帮助我。这是我的问题: enter image description here

这是我的解决方案;但我我不确定关于我在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

更新: enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

符号[i]表示取z ^ i的系数。请注意,我在定义中仅从0到l-d运行;因此,如果d大于l,则计算结果为为空。 d = 4和l = 3的示例不是此计算的有效输入。在本文的实际算法中,g的程度小于序列的长度。

虽然g(z ^( - 1))不是多项式(它具有z的负幂),但它与reciprocal polynomial密切相关,这是Ben Voigt在评论中提到的。确切地说,g(z ^( - 1))= z ^( - d)h(z)其中h是具有由g(end:-1:1)给出的系数的多项式。

在计算conv(h,s)之后,还有两件事要做。因子z ^( - d)将指数减少d,然后我们只保留从0到l-d的指数。通过抛弃conv结果的前d个和最后d个元素,将两者结合成一个。

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(s)-d,如预期的那样。