30 lines
1.1 KiB
Java
30 lines
1.1 KiB
Java
import java.util.Arrays;
|
|
|
|
public class Deconvolution1D {
|
|
public static int[] deconv(int[] g, int[] f) {
|
|
int[] h = new int[g.length - f.length + 1];
|
|
for (int n = 0; n < h.length; n++) {
|
|
h[n] = g[n];
|
|
int lower = Math.max(n - f.length + 1, 0);
|
|
for (int i = lower; i < n; i++)
|
|
h[n] -= h[i] * f[n - i];
|
|
h[n] /= f[0];
|
|
}
|
|
return h;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
int[] h = { -8, -9, -3, -1, -6, 7 };
|
|
int[] f = { -3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1 };
|
|
int[] g = { 24, 75, 71, -34, 3, 22, -45, 23, 245, 25, 52, 25, -67, -96,
|
|
96, 31, 55, 36, 29, -43, -7 };
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("h = " + Arrays.toString(h) + "\n");
|
|
sb.append("deconv(g, f) = " + Arrays.toString(deconv(g, f)) + "\n");
|
|
sb.append("f = " + Arrays.toString(f) + "\n");
|
|
sb.append("deconv(g, h) = " + Arrays.toString(deconv(g, h)) + "\n");
|
|
System.out.println(sb.toString());
|
|
}
|
|
}
|