Deconvolution/1D: Difference between revisions
Content added Content deleted
(Added FreeBASIC) |
|||
Line 881: | Line 881: | ||
f = [-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1] |
f = [-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1] |
||
deconv(g, h) = [-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1] |
deconv(g, h) = [-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1] |
||
</pre> |
|||
=={{header|jq}}== |
|||
{{trans|Wren}} |
|||
'''Works with jq, the C implementation of jq''' |
|||
'''Works with gojq, the Go implementation of jq''' |
|||
'''Works with jaq, the Rust implementation of jq''' |
|||
<syntaxhighlight lang="jq"> |
|||
def deconv($g; $f): |
|||
{ h: [range(0; ($g|length) - ($f|length) + 1) | 0] } |
|||
| reduce range ( 0;.h|length) as $n (.; |
|||
.h[$n] = $g[$n] |
|||
| (if $n >= ($f|length) then $n - ($f|length) + 1 else 0 end) as $lower |
|||
| .i = $lower |
|||
| until(.i >= $n; |
|||
.h[$n] -= .h[.i] * $f[$n - .i] |
|||
| .i += 1 ) |
|||
| .h[$n] /= $f[0] ) |
|||
| .h ; |
|||
### The tasks |
|||
def h: [-8, -9, -3, -1, -6, 7]; |
|||
def f: [-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1]; |
|||
def g: [24, 75, 71, -34, 3, 22, -45, 23, 245, 25, 52, 25, -67, -96, 96, 31, 55, 36, 29, -43, -7]; |
|||
h, |
|||
deconv(g; f), |
|||
f, |
|||
deconv(g; h) |
|||
</syntaxhighlight> |
|||
{{output}} |
|||
<pre> |
|||
[-8,-9,-3,-1,-6,7] |
|||
[-8,-9,-3,-1,-6,7] |
|||
[-3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1] |
|||
[-3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1] |
|||
</pre> |
</pre> |
||