| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"> |
| <title>FastHadamardTransformer (Apache Commons Math 3.3 API)</title> |
| <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style"> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="FastHadamardTransformer (Apache Commons Math 3.3 API)"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="topNav"><a name="navbar_top"> |
| <!-- --> |
| </a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../overview-summary.html">Overview</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="navBarCell1Rev">Class</li> |
| <li><a href="class-use/FastHadamardTransformer.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../help-doc.html">Help</a></li> |
| </ul> |
| <div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li><a href="../../../../../org/apache/commons/math3/transform/FastFourierTransformer.html" title="class in org.apache.commons.math3.transform"><span class="strong">Prev Class</span></a></li> |
| <li><a href="../../../../../org/apache/commons/math3/transform/FastSineTransformer.html" title="class in org.apache.commons.math3.transform"><span class="strong">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../index.html?org/apache/commons/math3/transform/FastHadamardTransformer.html" target="_top">Frames</a></li> |
| <li><a href="FastHadamardTransformer.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../../allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li>Nested | </li> |
| <li>Field | </li> |
| <li><a href="#constructor_summary">Constr</a> | </li> |
| <li><a href="#method_summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li>Field | </li> |
| <li><a href="#constructor_detail">Constr</a> | </li> |
| <li><a href="#method_detail">Method</a></li> |
| </ul> |
| </div> |
| <a name="skip-navbar_top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| <!-- ======== START OF CLASS DATA ======== --> |
| <div class="header"> |
| <div class="subTitle">org.apache.commons.math3.transform</div> |
| <h2 title="Class FastHadamardTransformer" class="title">Class FastHadamardTransformer</h2> |
| </div> |
| <div class="contentContainer"> |
| <ul class="inheritance"> |
| <li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li> |
| <li> |
| <ul class="inheritance"> |
| <li>org.apache.commons.math3.transform.FastHadamardTransformer</li> |
| </ul> |
| </li> |
| </ul> |
| <div class="description"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <dl> |
| <dt>All Implemented Interfaces:</dt> |
| <dd><a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="../../../../../org/apache/commons/math3/transform/RealTransformer.html" title="interface in org.apache.commons.math3.transform">RealTransformer</a></dd> |
| </dl> |
| <hr> |
| <br> |
| <pre>public class <span class="strong">FastHadamardTransformer</span> |
| extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> |
| implements <a href="../../../../../org/apache/commons/math3/transform/RealTransformer.html" title="interface in org.apache.commons.math3.transform">RealTransformer</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre> |
| <div class="block">Implements the <a href="http://www.archive.chipcenter.com/dsp/DSP000517F1.html">Fast Hadamard Transform</a> (FHT). |
| Transformation of an input vector x to the output vector y. |
| <p> |
| In addition to transformation of real vectors, the Hadamard transform can |
| transform integer vectors into integer vectors. However, this integer transform |
| cannot be inverted directly. Due to a scaling factor it may lead to rational results. |
| As an example, the inverse transform of integer vector (0, 1, 0, 1) is rational |
| vector (1/2, -1/2, 0, 0).</div> |
| <dl><dt><span class="strong">Since:</span></dt> |
| <dd>2.0</dd> |
| <dt><span class="strong">Version:</span></dt> |
| <dd>$Id: FastHadamardTransformer.java 1385310 2012-09-16 16:32:10Z tn $</dd> |
| <dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../serialized-form.html#org.apache.commons.math3.transform.FastHadamardTransformer">Serialized Form</a></dd></dl> |
| </li> |
| </ul> |
| </div> |
| <div class="summary"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ======== CONSTRUCTOR SUMMARY ======== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="constructor_summary"> |
| <!-- --> |
| </a> |
| <h3>Constructor Summary</h3> |
| <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> |
| <caption><span>Constructors</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colOne" scope="col">Constructor and Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/transform/FastHadamardTransformer.html#FastHadamardTransformer()">FastHadamardTransformer</a></strong>()</code> </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| <!-- ========== METHOD SUMMARY =========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="method_summary"> |
| <!-- --> |
| </a> |
| <h3>Method Summary</h3> |
| <table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> |
| <caption><span>Methods</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colLast" scope="col">Method and Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>protected double[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/transform/FastHadamardTransformer.html#fht(double[])">fht</a></strong>(double[] x)</code> |
| <div class="block">The FHT (Fast Hadamard Transformation) which uses only subtraction and |
| addition.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>protected int[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/transform/FastHadamardTransformer.html#fht(int[])">fht</a></strong>(int[] x)</code> |
| <div class="block">Returns the forward transform of the specified integer data set.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>double[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/transform/FastHadamardTransformer.html#transform(double[], org.apache.commons.math3.transform.TransformType)">transform</a></strong>(double[] f, |
| <a href="../../../../../org/apache/commons/math3/transform/TransformType.html" title="enum in org.apache.commons.math3.transform">TransformType</a> type)</code> |
| <div class="block">Returns the (forward, inverse) transform of the specified real data set.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>int[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/transform/FastHadamardTransformer.html#transform(int[])">transform</a></strong>(int[] f)</code> |
| <div class="block">Returns the forward transform of the specified integer data set.The |
| integer transform cannot be inverted directly, due to a scaling factor |
| which may lead to double results.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>double[]</code></td> |
| <td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/transform/FastHadamardTransformer.html#transform(org.apache.commons.math3.analysis.UnivariateFunction, double, double, int, org.apache.commons.math3.transform.TransformType)">transform</a></strong>(<a href="../../../../../org/apache/commons/math3/analysis/UnivariateFunction.html" title="interface in org.apache.commons.math3.analysis">UnivariateFunction</a> f, |
| double min, |
| double max, |
| int n, |
| <a href="../../../../../org/apache/commons/math3/transform/TransformType.html" title="enum in org.apache.commons.math3.transform">TransformType</a> type)</code> |
| <div class="block">Returns the (forward, inverse) transform of the specified real function, |
| sampled on the specified interval.</div> |
| </td> |
| </tr> |
| </table> |
| <ul class="blockList"> |
| <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object"> |
| <!-- --> |
| </a> |
| <h3>Methods inherited from class java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3> |
| <code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="details"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="constructor_detail"> |
| <!-- --> |
| </a> |
| <h3>Constructor Detail</h3> |
| <a name="FastHadamardTransformer()"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>FastHadamardTransformer</h4> |
| <pre>public FastHadamardTransformer()</pre> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <!-- ============ METHOD DETAIL ========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="method_detail"> |
| <!-- --> |
| </a> |
| <h3>Method Detail</h3> |
| <a name="transform(double[], org.apache.commons.math3.transform.TransformType)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>transform</h4> |
| <pre>public double[] transform(double[] f, |
| <a href="../../../../../org/apache/commons/math3/transform/TransformType.html" title="enum in org.apache.commons.math3.transform">TransformType</a> type)</pre> |
| <div class="block">Returns the (forward, inverse) transform of the specified real data set.</div> |
| <dl> |
| <dt><strong>Specified by:</strong></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/transform/RealTransformer.html#transform(double[], org.apache.commons.math3.transform.TransformType)">transform</a></code> in interface <code><a href="../../../../../org/apache/commons/math3/transform/RealTransformer.html" title="interface in org.apache.commons.math3.transform">RealTransformer</a></code></dd> |
| <dt><span class="strong">Parameters:</span></dt><dd><code>f</code> - the real data array to be transformed (signal)</dd><dd><code>type</code> - the type of transform (forward, inverse) to be performed</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the real transformed array (spectrum)</dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the length of the data array is |
| not a power of two</dd></dl> |
| </li> |
| </ul> |
| <a name="transform(org.apache.commons.math3.analysis.UnivariateFunction, double, double, int, org.apache.commons.math3.transform.TransformType)"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>transform</h4> |
| <pre>public double[] transform(<a href="../../../../../org/apache/commons/math3/analysis/UnivariateFunction.html" title="interface in org.apache.commons.math3.analysis">UnivariateFunction</a> f, |
| double min, |
| double max, |
| int n, |
| <a href="../../../../../org/apache/commons/math3/transform/TransformType.html" title="enum in org.apache.commons.math3.transform">TransformType</a> type)</pre> |
| <div class="block">Returns the (forward, inverse) transform of the specified real function, |
| sampled on the specified interval.</div> |
| <dl> |
| <dt><strong>Specified by:</strong></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/transform/RealTransformer.html#transform(org.apache.commons.math3.analysis.UnivariateFunction, double, double, int, org.apache.commons.math3.transform.TransformType)">transform</a></code> in interface <code><a href="../../../../../org/apache/commons/math3/transform/RealTransformer.html" title="interface in org.apache.commons.math3.transform">RealTransformer</a></code></dd> |
| <dt><span class="strong">Parameters:</span></dt><dd><code>f</code> - the function to be sampled and transformed</dd><dd><code>min</code> - the (inclusive) lower bound for the interval</dd><dd><code>max</code> - the (exclusive) upper bound for the interval</dd><dd><code>n</code> - the number of sample points</dd><dd><code>type</code> - the type of transform (forward, inverse) to be performed</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the real transformed array</dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/NonMonotonicSequenceException.html" title="class in org.apache.commons.math3.exception">NonMonotonicSequenceException</a></code> - if the lower bound is greater than, or equal to the upper bound</dd> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/NotStrictlyPositiveException.html" title="class in org.apache.commons.math3.exception">NotStrictlyPositiveException</a></code> - if the number of sample points is negative</dd> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the number of sample points is not a power of two</dd></dl> |
| </li> |
| </ul> |
| <a name="transform(int[])"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>transform</h4> |
| <pre>public int[] transform(int[] f)</pre> |
| <div class="block">Returns the forward transform of the specified integer data set.The |
| integer transform cannot be inverted directly, due to a scaling factor |
| which may lead to double results.</div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>f</code> - the integer data array to be transformed (signal)</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the integer transformed array (spectrum)</dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the length of the data array is not a power of two</dd></dl> |
| </li> |
| </ul> |
| <a name="fht(double[])"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>fht</h4> |
| <pre>protected double[] fht(double[] x) |
| throws <a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></pre> |
| <div class="block">The FHT (Fast Hadamard Transformation) which uses only subtraction and |
| addition. Requires <code>N * log2(N) = n * 2^n</code> additions. |
| |
| <h3>Short Table of manual calculation for N=8</h3> |
| <ol> |
| <li><b>x</b> is the input vector to be transformed,</li> |
| <li><b>y</b> is the output vector (Fast Hadamard transform of <b>x</b>),</li> |
| <li>a and b are helper rows.</li> |
| </ol> |
| <table align="center" border="1" cellpadding="3"> |
| <tbody align="center"> |
| <tr> |
| <th>x</th> |
| <th>a</th> |
| <th>b</th> |
| <th>y</th> |
| </tr> |
| <tr> |
| <th>x<sub>0</sub></th> |
| <td>a<sub>0</sub> = x<sub>0</sub> + x<sub>1</sub></td> |
| <td>b<sub>0</sub> = a<sub>0</sub> + a<sub>1</sub></td> |
| <td>y<sub>0</sub> = b<sub>0</sub >+ b<sub>1</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>1</sub></th> |
| <td>a<sub>1</sub> = x<sub>2</sub> + x<sub>3</sub></td> |
| <td>b<sub>0</sub> = a<sub>2</sub> + a<sub>3</sub></td> |
| <td>y<sub>0</sub> = b<sub>2</sub> + b<sub>3</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>2</sub></th> |
| <td>a<sub>2</sub> = x<sub>4</sub> + x<sub>5</sub></td> |
| <td>b<sub>0</sub> = a<sub>4</sub> + a<sub>5</sub></td> |
| <td>y<sub>0</sub> = b<sub>4</sub> + b<sub>5</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>3</sub></th> |
| <td>a<sub>3</sub> = x<sub>6</sub> + x<sub>7</sub></td> |
| <td>b<sub>0</sub> = a<sub>6</sub> + a<sub>7</sub></td> |
| <td>y<sub>0</sub> = b<sub>6</sub> + b<sub>7</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>4</sub></th> |
| <td>a<sub>0</sub> = x<sub>0</sub> - x<sub>1</sub></td> |
| <td>b<sub>0</sub> = a<sub>0</sub> - a<sub>1</sub></td> |
| <td>y<sub>0</sub> = b<sub>0</sub> - b<sub>1</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>5</sub></th> |
| <td>a<sub>1</sub> = x<sub>2</sub> - x<sub>3</sub></td> |
| <td>b<sub>0</sub> = a<sub>2</sub> - a<sub>3</sub></td> |
| <td>y<sub>0</sub> = b<sub>2</sub> - b<sub>3</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>6</sub></th> |
| <td>a<sub>2</sub> = x<sub>4</sub> - x<sub>5</sub></td> |
| <td>b<sub>0</sub> = a<sub>4</sub> - a<sub>5</sub></td> |
| <td>y<sub>0</sub> = b<sub>4</sub> - b<sub>5</sub></td> |
| </tr> |
| <tr> |
| <th>x<sub>7</sub></th> |
| <td>a<sub>3</sub> = x<sub>6</sub> - x<sub>7</sub></td> |
| <td>b<sub>0</sub> = a<sub>6</sub> - a<sub>7</sub></td> |
| <td>y<sub>0</sub> = b<sub>6</sub> - b<sub>7</sub></td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h3>How it works</h3> |
| <ol> |
| <li>Construct a matrix with <code>N</code> rows and <code>n + 1</code> columns, |
| <code>hadm[n+1][N]</code>.<br/> |
| <em>(If I use [x][y] it always means [row-offset][column-offset] of a |
| Matrix with n rows and m columns. Its entries go from M[0][0] |
| to M[n][N])</em></li> |
| <li>Place the input vector <code>x[N]</code> in the first column of the |
| matrix <code>hadm</code>.</li> |
| <li>The entries of the submatrix <code>D_top</code> are calculated as follows |
| <ul> |
| <li><code>D_top</code> goes from entry <code>[0][1]</code> to |
| <code>[N / 2 - 1][n + 1]</code>,</li> |
| <li>the columns of <code>D_top</code> are the pairwise mutually |
| exclusive sums of the previous column.</li> |
| </ul> |
| </li> |
| <li>The entries of the submatrix <code>D_bottom</code> are calculated as |
| follows |
| <ul> |
| <li><code>D_bottom</code> goes from entry <code>[N / 2][1]</code> to |
| <code>[N][n + 1]</code>,</li> |
| <li>the columns of <code>D_bottom</code> are the pairwise differences |
| of the previous column.</li> |
| </ul> |
| </li> |
| <li>The consputation of <code>D_top</code> and <code>D_bottom</code> are best |
| understood with the above example (for <code>N = 8</code>). |
| <li>The output vector <code>y</code> is now in the last column of |
| <code>hadm</code>.</li> |
| <li><em>Algorithm from <a href="http://www.archive.chipcenter.com/dsp/DSP000517F1.html">chipcenter</a>.</em></li> |
| </ol> |
| <h3>Visually</h3> |
| <table border="1" align="center" cellpadding="3"> |
| <tbody align="center"> |
| <tr> |
| <td></td><th>0</th><th>1</th><th>2</th><th>3</th> |
| <th>…</th> |
| <th>n + 1</th> |
| </tr> |
| <tr> |
| <th>0</th> |
| <td>x<sub>0</sub></td> |
| <td colspan="5" rowspan="5" align="center" valign="middle"> |
| ↑<br/> |
| ← D<sub>top</sub> →<br/> |
| ↓ |
| </td> |
| </tr> |
| <tr><th>1</th><td>x<sub>1</sub></td></tr> |
| <tr><th>2</th><td>x<sub>2</sub></td></tr> |
| <tr><th>…</th><td>…</td></tr> |
| <tr><th>N / 2 - 1</th><td>x<sub>N/2-1</sub></td></tr> |
| <tr> |
| <th>N / 2</th> |
| <td>x<sub>N/2</sub></td> |
| <td colspan="5" rowspan="5" align="center" valign="middle"> |
| ↑<br/> |
| ← D<sub>bottom</sub> →<br/> |
| ↓ |
| </td> |
| </tr> |
| <tr><th>N / 2 + 1</th><td>x<sub>N/2+1</sub></td></tr> |
| <tr><th>N / 2 + 2</th><td>x<sub>N/2+2</sub></td></tr> |
| <tr><th>…</th><td>…</td></tr> |
| <tr><th>N</th><td>x<sub>N</sub></td></tr> |
| </tbody> |
| </table></div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - the real data array to be transformed</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the real transformed array, <code>y</code></dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the length of the data array is not a power of two</dd></dl> |
| </li> |
| </ul> |
| <a name="fht(int[])"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>fht</h4> |
| <pre>protected int[] fht(int[] x) |
| throws <a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></pre> |
| <div class="block">Returns the forward transform of the specified integer data set. The FHT |
| (Fast Hadamard Transform) uses only subtraction and addition.</div> |
| <dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - the integer data array to be transformed</dd> |
| <dt><span class="strong">Returns:</span></dt><dd>the integer transformed array, <code>y</code></dd> |
| <dt><span class="strong">Throws:</span></dt> |
| <dd><code><a href="../../../../../org/apache/commons/math3/exception/MathIllegalArgumentException.html" title="class in org.apache.commons.math3.exception">MathIllegalArgumentException</a></code> - if the length of the data array is not a power of two</dd></dl> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <!-- ========= END OF CLASS DATA ========= --> |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <div class="bottomNav"><a name="navbar_bottom"> |
| <!-- --> |
| </a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../overview-summary.html">Overview</a></li> |
| <li><a href="package-summary.html">Package</a></li> |
| <li class="navBarCell1Rev">Class</li> |
| <li><a href="class-use/FastHadamardTransformer.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../help-doc.html">Help</a></li> |
| </ul> |
| <div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div> |
| </div> |
| <div class="subNav"> |
| <ul class="navList"> |
| <li><a href="../../../../../org/apache/commons/math3/transform/FastFourierTransformer.html" title="class in org.apache.commons.math3.transform"><span class="strong">Prev Class</span></a></li> |
| <li><a href="../../../../../org/apache/commons/math3/transform/FastSineTransformer.html" title="class in org.apache.commons.math3.transform"><span class="strong">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../index.html?org/apache/commons/math3/transform/FastHadamardTransformer.html" target="_top">Frames</a></li> |
| <li><a href="FastHadamardTransformer.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../../allclasses-noframe.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| </div> |
| <div> |
| <ul class="subNavList"> |
| <li>Summary: </li> |
| <li>Nested | </li> |
| <li>Field | </li> |
| <li><a href="#constructor_summary">Constr</a> | </li> |
| <li><a href="#method_summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li>Field | </li> |
| <li><a href="#constructor_detail">Constr</a> | </li> |
| <li><a href="#method_detail">Method</a></li> |
| </ul> |
| </div> |
| <a name="skip-navbar_bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| <p class="legalCopy"><small>Copyright © 2003–2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </body> |
| </html> |