Deconvolution/1D: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→{{header|Perl 6}}: bug in 'trim_system', omit) |
(→{{header|zkl}}: added GSL solution) |
||
Line 1,106: | Line 1,106: | ||
=={{header|zkl}}== |
=={{header|zkl}}== |
||
Using GNU Scientific Library: |
|||
<lang zkl>var [const] GSL=Import("zklGSL"); // libGSL (GNU Scientific Library) |
|||
fcn dconv1D(f,g){ |
|||
fsz,hsz:=f.len(), g.len() - fsz +1; |
|||
A:=GSL.Matrix(g.len(),hsz); |
|||
foreach n,fn in ([0..].zip(f)){ foreach rc in (hsz){ A[rc+n,rc]=fn } } |
|||
h:=A.AxEQb(g); |
|||
h |
|||
}</lang> |
|||
<lang zkl>f:=GSL.VectorFromData(-3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1); |
|||
g:=GSL.VectorFromData(24,75,71,-34,3,22,-45,23,245,25,52,25,-67,-96,96,31,55,36,29,-43,-7); |
|||
h:=dconv1D(f,g); |
|||
h.format().println(); |
|||
f:=dconv1D(h,g); |
|||
f.format().println();</lang> |
|||
{{out}} |
|||
<pre> |
|||
-8.00,-9.00,-3.00,-1.00,-6.00,7.00 |
|||
-3.00,-6.00,-1.00,8.00,-6.00,3.00,-1.00,-9.00,-9.00,3.00,-2.00,5.00,2.00,-2.00,-7.00,-1.00 |
|||
</pre> |
|||
Or, using lists: |
|||
{{trans|D}} |
{{trans|D}} |
||
<lang zkl>fcn deconv(g,f){ |
<lang zkl>fcn deconv(g,f){ |