Author: erans
Date: Wed Jun 5 11:42:36 2013
New Revision: 1489821
URL: http://svn.apache.org/r1489821
Log:
Javadoc. Variable names.
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java?rev=1489821&r1=1489820&r2=1489821&view=diff
==============================================================================
---
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
(original)
+++
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/util/MathArrays.java
Wed Jun 5 11:42:36 2013
@@ -1354,45 +1354,50 @@ public class MathArrays {
}
/**
- * Calculates the convolution between two sequences.
- * <p>
- * The solution is obtained via straightforward computation of the
convolution sum (and not via FFT;
- * for longer sequences, the performance of this method might be inferior
to an FFT-based implementation).
+ * Calculates the <a href="http://en.wikipedia.org/wiki/Convolution">
+ * convolution</a> between two sequences.
+ * The solution is obtained via straightforward computation of the
+ * convolution sum (and not via FFT).
+ * Whenever the computation needs an element that would be located
+ * at an index outside the input arrays, the value is assumed to be
+ * zero.
*
- * @param x the first sequence (double array of length {@code N});
- * the sequence is assumed to be zero elsewhere (i.e. {x[i]}=0 for i<0
and i>={@code N}).
- * Typically, this sequence will represent an input signal to a system.
- * @param h the second sequence (double array of length {@code M});
- * the sequence is assumed to be zero elsewhere (i.e. {h[i]}=0 for i<0
and i>={@code M}).
- * Typically, this sequence will represent the impulse response of the
system.
- * @return the convolution of {@code x} and {@code h} (double array of
length {@code N} + {@code M} -1)
- * @throws NullArgumentException if either {@code x} or {@code h} is null
- * @throws NoDataException if either {@code x} or {@code h} is empty
+ * @param x First sequence.
+ * Typically, this sequence will represent an input signal to a system.
+ * @param h Second sequence.
+ * Typically, this sequence will represent the impulse response of the
+ * system.
+ * @return the convolution of {@code x} and {@code h}.
+ * This array's length will be {@code x.length + h.length - 1}.
+ * @throws NullArgumentException if either {@code x} or {@code h} is
+ * {@code null}.
+ * @throws NoDataException if either {@code x} or {@code h} is empty.
*
- * @see <a href="http://en.wikipedia.org/wiki/Convolution">Convolution
(Wikipedia)</a>
* @since 3.3
*/
- public static double[] convolve(double[] x, double[] h) throws
NullArgumentException, NoDataException {
+ public static double[] convolve(double[] x, double[] h)
+ throws NullArgumentException,
+ NoDataException {
MathUtils.checkNotNull(x);
MathUtils.checkNotNull(h);
- final int lenX = x.length;
- final int lenH = h.length;
+ final int xLen = x.length;
+ final int hLen = h.length;
- if (lenX == 0 || lenH == 0) {
+ if (xLen == 0 || hLen == 0) {
throw new NoDataException();
}
// initialize the output array
- final int totalLength = lenX + lenH - 1;
+ final int totalLength = xLen + hLen - 1;
final double[] y = new double[totalLength];
// straightforward implementation of the convolution sum
for (int n = 0; n < totalLength; n++) {
double yn = 0;
- int k = FastMath.max(0, n + 1 - lenX);
+ int k = FastMath.max(0, n + 1 - xLen);
int j = n - k;
- while (k < lenH && j >= 0) {
+ while (k < hLen && j >= 0) {
yn += x[j--] * h[k++];
}
y[n] = yn;
@@ -1400,5 +1405,4 @@ public class MathArrays {
return y;
}
-
}