Deconvolution/2D+: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→{{header|Perl}}: oops, need 'say' for output) |
SqrtNegInf (talk | contribs) m (→{{header|Perl}}: a few simplifications) |
||
Line 859: | Line 859: | ||
my @dg = shape(@g); |
my @dg = shape(@g); |
||
my @hsize; |
my @hsize; |
||
push @hsize, |
push @hsize, $dg[$_] - $df[$_] + 1 for 0..$#df; |
||
my @toSolve = map { [row(\@g, \@f, \@hsize, $_)] } coords(shape(@g)); |
my @toSolve = map { [row(\@g, \@f, \@hsize, $_)] } coords(shape(@g)); |
||
rref( \@toSolve ); |
rref( \@toSolve ); |
||
my @h; |
my @h; |
||
my $mag = $hsize[0]*$hsize[1]*$hsize[2]; |
|||
for (0.. $mag-1) { |
|||
push @h, $toSolve[$_][$mag]; |
|||
} |
|||
my @soln; |
|||
my $n = 0; |
my $n = 0; |
||
for (coords(@hsize)) { |
for (coords(@hsize)) { |
||
my($ |
my($k,$j,$i) = split ' ', $_; |
||
$ |
$h[$i][$j][$k] = $toSolve[$n++][-1]; |
||
$n++; |
|||
} |
} |
||
@ |
@h; |
||
} |
} |
||
Line 886: | Line 880: | ||
my @row; |
my @row; |
||
my @fdim = shape(@f); |
my @fdim = shape(@f); |
||
@gc = @gc[0..$#fdim]; # clip extraneous values |
|||
for (coords(@hsize)) { |
for (coords(@hsize)) { |
||
my @hc = reverse split ' ', $_; |
my @hc = reverse split ' ', $_; |
||
Line 997: | Line 990: | ||
] |
] |
||
); |
); |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
my @h = deconvolve_N( \@g, \@f ); |
my @h = deconvolve_N( \@g, \@f ); |
||
my @ff = deconvolve_N( \@g, \@h ); |
my @ff = deconvolve_N( \@g, \@h ); |
||
⚫ | |||
⚫ | |||
⚫ | |||
pretty_print(0,@h); |
pretty_print(0,@h); |
||
⚫ | |||
pretty_print(0,@ff);</lang> |
pretty_print(0,@ff);</lang> |
||
{{out}} |
{{out}} |
||
<pre>3D |
<pre>3D arrays: |
||
h = |
h = |
||
[ |
[ |