As requested, here's the code i'm using:<br>
<br>
&nbsp;&nbsp;&nbsp; vtkDataSetReader *reader = vtkDataSetReader::New();<br>
&nbsp;&nbsp;&nbsp; reader-&gt;SetFileName(argv[1]);<br>
&nbsp;&nbsp;&nbsp; reader-&gt;Update();<br>
&nbsp;&nbsp;&nbsp; reader-&gt;GetOutput()-&gt;GetPointData()-&gt;CopyAllOff();<br>
&nbsp;&nbsp;&nbsp; reader-&gt;GetOutput()-&gt;GetPointData()-&gt;SetActiveScalars(&quot;Velocity&quot;);<br>
&nbsp;&nbsp;&nbsp; reader-&gt;GetOutput()-&gt;GetPointData()-&gt;CopyScalarsOn();<br>
&nbsp;&nbsp;&nbsp; printf(&quot;Done!\n&quot;);<br>
//&nbsp;&nbsp;&nbsp; PrintStatistics(reader-&gt;GetOutput());<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; printf(&quot;Extracting Velocity X-Component...\n&quot;);<br>
&nbsp;&nbsp;&nbsp; vtkArrayCalculator *extract = vtkArrayCalculator::New();<br>
&nbsp;&nbsp;&nbsp; extract-&gt;SetInput(reader-&gt;GetOutput());<br>
&nbsp;&nbsp;&nbsp; extract-&gt;SetResultArrayName(&quot;result&quot;);<br>
&nbsp;&nbsp;&nbsp; extract-&gt;AddScalarVariable(&quot;x&quot;, &quot;Velocity&quot;, 0);<br>
&nbsp;&nbsp;&nbsp; extract-&gt;SetFunction(&quot;x&quot;);<br>
&nbsp;&nbsp;&nbsp; extract-&gt;Update();<br>
&nbsp;&nbsp;&nbsp; PrintStatistics(extract-&gt;GetOutput());<br>
<br>
&nbsp;&nbsp;&nbsp; printf(&quot;Computing FFT...\n&quot;);<br>
&nbsp;&nbsp;&nbsp; vtkImageFFT *fft = vtkImageFFT::New();<br>
&nbsp;&nbsp;&nbsp; fft-&gt;SetInput(extract-&gt;GetOutput());<br>
&nbsp;&nbsp;&nbsp; fft-&gt;SetDimensionality(3);<br>
&nbsp;&nbsp;&nbsp; fft-&gt;Update();<br>
&nbsp;&nbsp;&nbsp; PrintStatistics(fft-&gt;GetOutput());<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; printf(&quot;Computing Magnitude...\n&quot;);<br>
&nbsp;&nbsp;&nbsp; vtkArrayCalculator *mag = vtkArrayCalculator::New();<br>
&nbsp;&nbsp;&nbsp; mag-&gt;SetInput(fft-&gt;GetOutput());<br>
&nbsp;&nbsp;&nbsp; mag-&gt;SetResultArrayName(&quot;FFTMag&quot;);<br>
&nbsp;&nbsp;&nbsp; mag-&gt;AddScalarVariable(&quot;x&quot;, &quot;result&quot;, 0);<br>
&nbsp;&nbsp;&nbsp; mag-&gt;AddScalarVariable(&quot;y&quot;, &quot;result&quot;, 1);<br>
&nbsp;&nbsp;&nbsp; mag-&gt;SetFunction(&quot;(x*x) + (y*y)&quot;);<br>
&nbsp;&nbsp;&nbsp; mag-&gt;Update();<br>
&nbsp;&nbsp;&nbsp; PrintStatistics(mag-&gt;GetOutput());<br>
<br>
<br>
>From the &quot;PrintStatistics&quot; function, the &quot;result&quot; array before the FFT looks like this:<br>
<div style="margin-left: 40px;">p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array [4]: vtkDoubleArray &quot;result&quot;, 2,097,152 points, 8 bytes per point<br>
p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Magnitude Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-0.07686&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.07686<br>
p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Component 0 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-0.07686&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.07686<br>
</div>
And after the FFT:<br>
<div style="margin-left: 40px;">p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Array [0]: vtkDoubleArray &quot;result&quot;, 2,097,152 points, 8 bytes per point<br>
p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Magnitude Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3.485e+19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.803e+22<br>
p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Component 0 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-7.688e+22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.688e+22<br>
p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Component 1 Range:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-6.814e+22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.814e+22<br>
</div>
<br>
<br><br><div><span class="gmail_quote">On 9/7/05, <b class="gmail_sendername">Randall Hand</b> &lt;<a href="mailto:randall.hand@gmail.com">randall.hand@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I have a 3D 128^3 volume of data, containing a velocity vector.&nbsp; I
use a vtkArrayCalculator to extract a single component of the velocity
(X in this case), and use the vtkImageFFT to compute a Fourier
Transform of the data.<br>
<br>
The original data is of the range -0.02 to 0.02, but computing the magnitude of the resulting FFT dataset yields a <span style="font-weight: bold;">minimum value</span>
of 6*10^20, and a Maximum of over *10^24.&nbsp; Can anyone explain what
might be happening here?&nbsp; Parseval's theorem states that the
resulting FFT should be of similar magnitude to the input data.<br style="font-weight: bold;" clear="all"><span class="sg"><br>-- <br>Randall Hand<br>Visualization Scientist<br>
ERDC-MSRC Vicksburg, MS<br>


</span></blockquote></div><br><br clear="all"><br>-- <br>Randall Hand<br>Visualization Scientist, <br>ERDC-MSRC Vicksburg, MS<br>Homepage: <a href="http://www.yeraze.com">http://www.yeraze.com</a>