Deconvolution/1D: Difference between revisions
Content added Content deleted
m ({{out}}) |
(→{{header|Ursala}}: Added zkl) |
||
Line 1,102: | Line 1,102: | ||
-7.000000e+00, |
-7.000000e+00, |
||
-1.000000e+00>> |
-1.000000e+00>> |
||
</pre> |
|||
=={{header|zkl}}== |
|||
{{trans|D}} |
|||
<lang zkl>fcn deconv(g,f){ |
|||
flen, glen, delta:=f.len(), g.len(), glen - flen + 1; |
|||
result:=List.createLong(delta); // allocate list with space for items |
|||
foreach n in (delta){ |
|||
e:=g[n]; |
|||
lowerBound:=(if (n>=flen) n - flen + 1 else 0); |
|||
foreach i in ([lowerBound .. n-1]){ e-=result[i]*f[n - i]; } |
|||
result.append(e/f[0]); |
|||
} |
|||
result; |
|||
}</lang> |
|||
<lang zkl>h:=T(-8,-9,-3,-1,-6,7); |
|||
f:=T(-3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1); |
|||
g:=T(24,75,71,-34,3,22,-45,23,245,25,52,25,-67, |
|||
-96,96,31,55,36,29,-43,-7); |
|||
println(deconv(g, f) == h, " ", deconv(g, f)); |
|||
println(deconv(g, h) == f, " ", deconv(g, h));</lang> |
|||
{{out}} |
|||
<pre> |
|||
True L(-8,-9,-3,-1,-6,7) |
|||
True L(-3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1) |
|||
</pre> |
</pre> |