package Maths;/*** Class for linear convolution of two discrete signals** @author Ioannis Karavitsis* @version 1.0*/public class Convolution {/*** Discrete linear convolution function. Both input signals and the output signal must start from* 0. If you have a signal that has values before 0 then shift it to start from 0.** @param A The first discrete signal* @param B The second discrete signal* @return The convolved signal*/public static double[] convolution(double[] A, double[] B) {double[] convolved = new double[A.length + B.length - 1];/*The discrete convolution of two signals A and B is defined as:A.lengthC[i] = Σ (A[k]*B[i-k])k=0It's obvious that: 0 <= k <= A.length , 0 <= i <= A.length + B.length - 2 and 0 <= i-k <= B.length - 1From the last inequality we get that: i - B.length + 1 <= k <= i and thus we get the conditions below.*/for (int i = 0; i < convolved.length; i++) {convolved[i] = 0;int k = Math.max(i - B.length + 1, 0);while (k < i + 1 && k < A.length) {convolved[i] += A[k] * B[i - k];k++;}}return convolved;}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。