<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MKL FFT and Inverse FFT in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873017#M8647</link>
    <description>&lt;P&gt;Dakin,&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Looks like it was you who startedthread about &lt;B&gt;The FFT adjusts only half size...&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;And that root cause was in interpretation/visualization of data after FFTs. So, please double check your testcase again.&lt;/P&gt;
&lt;P&gt;Anyway, it will benice to see your self-contained testcase to reproduce your new problem in order to help you.&lt;/P&gt;</description>
    <pubDate>Fri, 12 Mar 2010 08:30:25 GMT</pubDate>
    <dc:creator>barragan_villanueva_</dc:creator>
    <dc:date>2010-03-12T08:30:25Z</dc:date>
    <item>
      <title>MKL FFT and Inverse FFT</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873014#M8644</link>
      <description>&lt;P&gt;Dear. Intel Members&lt;/P&gt;
&lt;P&gt;I gottwo answers from intel engineer about MKL FFT and Inverse FFT&lt;/P&gt;
&lt;P&gt;but I got a problem.&lt;/P&gt;
&lt;P&gt;from first answer. Ican get a right forward FFT signal about our data. but I can get a inverse data&lt;/P&gt;
&lt;P&gt;(Our data consist of 14bit WORD type so I usemy data transfer to float)&lt;/P&gt;
&lt;P&gt;from second answer.I canget a correct Inverse data But I can't use FFT Data because some different&lt;/P&gt;
&lt;P&gt;things compair malab result.&lt;/P&gt;
&lt;P&gt;below is your two answer.&lt;/P&gt;
&lt;P&gt;and I attached1 file about your answer result&lt;/P&gt;
&lt;P&gt;this issue is very urgent&lt;/P&gt;
&lt;P&gt;If you able Please answer ASAP&lt;/P&gt;
&lt;P&gt;Thanks~&lt;/P&gt;
&lt;P&gt;All the Best&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;1.&lt;/P&gt;
&lt;P&gt;int i,j;&lt;/P&gt;
&lt;P&gt;const int ROWS=3072, COLS=2560;&lt;/P&gt;
&lt;P&gt;const int ROWSIZE=COLS, COLSIZE=ROWS;&lt;/P&gt;
&lt;P&gt;_complex *xx = new _complex[ROWS*COLS];&lt;/P&gt;
&lt;P&gt;memset(xx,1,2*sizeof(float)*ROWS*COLS); /* zero fill initialization */&lt;/P&gt;
&lt;P&gt;int r,c;&lt;/P&gt;
&lt;P&gt;for(r=0;r&lt;ROWS&gt;
&lt;/ROWS&gt;&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;for (c=0;c&lt;COLS&gt;
&lt;/COLS&gt;&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;xx[*ROWSIZE+(c)].x = (img[*ROWSIZE+(c)]);&lt;/P&gt;
&lt;P&gt;xx[*ROWSIZE+(c)].y = (img[*ROWSIZE+(c)]);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;int Height_f = ROWS;&lt;/P&gt;
&lt;P&gt;int Widtht_f = COLS;&lt;/P&gt;
&lt;P&gt;DFTI_DESCRIPTOR_HANDLE rowfft;&lt;/P&gt;
&lt;P&gt;DFTI_DESCRIPTOR_HANDLE colfft;&lt;/P&gt;
&lt;P&gt;MKL_LONG status;&lt;/P&gt;
&lt;P&gt;MKL_LONG l[2];&lt;/P&gt;
&lt;P&gt;float src;&lt;/P&gt;
&lt;P&gt;//////////////////////////////////////////////////////////////////////////////////&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;DftiCreateDescriptor(&amp;amp;rowfft, DFTI_SINGLE, DFTI_COMPLEX, 1, ROWSIZE); /* stride 1 by default */&lt;/P&gt;
&lt;P&gt;DftiSetValue(rowfft, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)ROWS);&lt;/P&gt;
&lt;P&gt;DftiSetValue(rowfft, DFTI_INPUT_DISTANCE, (MKL_LONG)ROWSIZE);&lt;/P&gt;
&lt;P&gt;DftiSetValue(rowfft, DFTI_OUTPUT_DISTANCE, (MKL_LONG)ROWSIZE);&lt;/P&gt;
&lt;P&gt;DftiCreateDescriptor(&amp;amp;colfft, DFTI_SINGLE, DFTI_COMPLEX, 1, COLSIZE); /* will set strides */&lt;/P&gt;
&lt;P&gt;MKL_LONG colfft_strides[] = {0, ROWSIZE};&lt;/P&gt;
&lt;P&gt;DftiSetValue(colfft, DFTI_INPUT_STRIDES, colfft_strides);&lt;/P&gt;
&lt;P&gt;DftiSetValue(colfft, DFTI_OUTPUT_STRIDES, colfft_strides);&lt;/P&gt;
&lt;P&gt;DftiSetValue(colfft, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)COLS);&lt;/P&gt;
&lt;P&gt;DftiSetValue(colfft, DFTI_INPUT_DISTANCE, (MKL_LONG)1);&lt;/P&gt;
&lt;P&gt;DftiSetValue(colfft, DFTI_OUTPUT_DISTANCE, (MKL_LONG)1);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;status = DftiCommitDescriptor( rowfft);&lt;/P&gt;
&lt;P&gt;DftiComputeForward(rowfft, xx);&lt;/P&gt;
&lt;P&gt;status = DftiCommitDescriptor( colfft);&lt;/P&gt;
&lt;P&gt;DftiComputeForward(colfft, xx);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;2. Second Answer&lt;/P&gt;
&lt;P&gt;#define x(r,c) x[*ROWSIZE+(c)] /* explicit row-major indexing */&lt;/P&gt;
&lt;P&gt;typedef struct {float x,y;} singlecomplex;&lt;/P&gt;
&lt;P&gt;const int ROWS=3072, COLS=2560;&lt;/P&gt;
&lt;P&gt;const int ROWSIZE=COLS, COLSIZE=ROWS;&lt;/P&gt;
&lt;P&gt;singlecomplex* xx;&lt;/P&gt;
&lt;P&gt;xx = (singlecomplex *)malloc(2*sizeof(float)*ROWS*COLS); /* zero fill initialization -&amp;gt; Ones pading */&lt;/P&gt;
&lt;P&gt;memset(xx,0,2*sizeof(float)*ROWS*COLS); /* zero fill initialization */&lt;/P&gt;
&lt;P&gt;int r,c;&lt;/P&gt;
&lt;P&gt;for(r=0;r&lt;ROWS&gt;
&lt;/ROWS&gt;&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;for (c=0;c&lt;COLS&gt;
&lt;/COLS&gt;&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;xx[*ROWSIZE+(c)].x = (img[*ROWSIZE+(c)]);&lt;/P&gt;
&lt;P&gt;xx[*ROWSIZE+(c)].y = (img[*ROWSIZE+(c)]);&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;int Height_f = ROWS;&lt;/P&gt;
&lt;P&gt;int Widtht_f = COLS;&lt;/P&gt;
&lt;P&gt;DFTI_DESCRIPTOR_HANDLE rowfft;&lt;/P&gt;
&lt;P&gt;DFTI_DESCRIPTOR_HANDLE colfft;&lt;/P&gt;
&lt;P&gt;MKL_LONG status;&lt;/P&gt;
&lt;P&gt;MKL_LONG colfft_strides[] = {0, ROWSIZE};&lt;/P&gt;
&lt;P&gt;float src;&lt;/P&gt;
&lt;P&gt;status = DftiCreateDescriptor(&amp;amp;rowfft, DFTI_SINGLE, DFTI_COMPLEX, 1, (MKL_LONG)ROWSIZE); /* stride 1 by default */&lt;/P&gt;
&lt;P&gt;status = DftiSetValue(rowfft, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)ROWS);&lt;/P&gt;
&lt;P&gt;status = DftiSetValue(rowfft, DFTI_INPUT_DISTANCE, (MKL_LONG)ROWSIZE);&lt;/P&gt;
&lt;P&gt;status = DftiSetValue(rowfft, DFTI_BACKWARD_SCALE, 1.0/(ROWS*COLS));&lt;/P&gt;
&lt;P&gt;// status = DftiSetValue(rowfft, DFTI_OUTPUT_DISTANCE, (MKL_LONG)ROWSIZE); // not needed for in-place&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;status = DftiCreateDescriptor(&amp;amp;colfft, DFTI_SINGLE, DFTI_COMPLEX, 1, (MKL_LONG)COLSIZE); /* will set strides */&lt;/P&gt;
&lt;P&gt;status = DftiSetValue(colfft, DFTI_NUMBER_OF_TRANSFORMS, (MKL_LONG)COLS);&lt;/P&gt;
&lt;P&gt;status = DftiSetValue(colfft, DFTI_INPUT_DISTANCE, (MKL_LONG)1);&lt;/P&gt;
&lt;P&gt;// status = DftiSetValue(colfft, DFTI_OUTPUT_DISTANCE, (MKL_LONG)1); // not needed for in-place&lt;/P&gt;
&lt;P&gt;status = DftiSetValue(colfft, DFTI_INPUT_STRIDES, colfft_strides);&lt;/P&gt;
&lt;P&gt;// status = DftiSetValue(colfft, DFTI_OUTPUT_STRIDES, colfft_strides); // not needed for in-place&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;status = DftiCommitDescriptor( rowfft);&lt;/P&gt;
&lt;P&gt;status = DftiComputeForward(rowfft, xx);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;status = DftiCommitDescriptor( colfft);&lt;/P&gt;
&lt;P&gt;status = DftiComputeForward(colfft, xx);&lt;/P&gt;
&lt;P&gt;// ///Inverse FFT&lt;/P&gt;
&lt;P&gt;status = DftiCommitDescriptor( colfft);&lt;/P&gt;
&lt;P&gt;status = DftiComputeBackward(colfft, xx);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;status = DftiCommitDescriptor( rowfft);&lt;/P&gt;
&lt;P&gt;status = DftiComputeBackward(rowfft, xx);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Mar 2010 03:20:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873014#M8644</guid>
      <dc:creator>Dakin</dc:creator>
      <dc:date>2010-03-11T03:20:17Z</dc:date>
    </item>
    <item>
      <title>MKL FFT and Inverse FFT</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873015#M8645</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;The difference between these two variants is in using normalization of trnasforms:&lt;/P&gt;
&lt;P&gt; status = DftiSetValue(rowfft, DFTI_BACKWARD_SCALE, 1.0/(ROWS*COLS));&lt;/P&gt;
&lt;P&gt;But also please correct your second variant which is not currently correspond to what wassuggested to you.&lt;/P&gt;
&lt;P&gt;I means, not needed DftiCommitDescriptor callsafter line // ///Inverse FFT.&lt;/P&gt;
&lt;P&gt;Maybe something else was not corrected by you.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Mar 2010 08:34:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873015#M8645</guid>
      <dc:creator>barragan_villanueva_</dc:creator>
      <dc:date>2010-03-11T08:34:38Z</dc:date>
    </item>
    <item>
      <title>MKL FFT and Inverse FFT</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873016#M8646</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;
&lt;P&gt;Thanks to your fast answer&lt;/P&gt;
&lt;P&gt;your answer:&lt;/P&gt;
&lt;P&gt;I means, not needed DftiCommitDescriptor calls after line // ///Inverse FFT.&lt;/P&gt;
&lt;P&gt;-&amp;gt; It is just test code. When I use inverse FFT I don't call DftiCommitDescriptor&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Already I attachedmy result file.&lt;/P&gt;
&lt;P&gt;I testmy code usingyour code(first code), and your engineer code (2).&lt;/P&gt;
&lt;P&gt;Result of FFTusing first code I can see frequency. so I can calculate something.&lt;/P&gt;
&lt;P&gt;but I can't get a incerse FFT image.&lt;/P&gt;
&lt;P&gt;general, As I know FFT + inverse FFT -&amp;gt; Original image (if I don't treat anything)&lt;/P&gt;
&lt;P&gt;by your 1 code I test fft and Inverse fft but I can't get a original image.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;When I using code 2&lt;/P&gt;
&lt;P&gt;in this case I can get FFT + incerse FFT = original image&lt;/P&gt;
&lt;P&gt;but in the FFT image, I can't see the signal. and I cant calculate frequency.&lt;/P&gt;
&lt;P&gt;my needs : FFT -&amp;gt; find frequency position information and some calculate and inverse fft&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;all the best&lt;/P&gt;
&lt;P&gt;Dakin&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 11 Mar 2010 12:38:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873016#M8646</guid>
      <dc:creator>Dakin</dc:creator>
      <dc:date>2010-03-11T12:38:08Z</dc:date>
    </item>
    <item>
      <title>MKL FFT and Inverse FFT</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873017#M8647</link>
      <description>&lt;P&gt;Dakin,&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Looks like it was you who startedthread about &lt;B&gt;The FFT adjusts only half size...&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;And that root cause was in interpretation/visualization of data after FFTs. So, please double check your testcase again.&lt;/P&gt;
&lt;P&gt;Anyway, it will benice to see your self-contained testcase to reproduce your new problem in order to help you.&lt;/P&gt;</description>
      <pubDate>Fri, 12 Mar 2010 08:30:25 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873017#M8647</guid>
      <dc:creator>barragan_villanueva_</dc:creator>
      <dc:date>2010-03-12T08:30:25Z</dc:date>
    </item>
    <item>
      <title>MKL FFT and Inverse FFT</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873018#M8648</link>
      <description>&lt;P&gt;Victor&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;you are right my issee Start from FFT harf size .&lt;/P&gt;
&lt;P&gt;I also test from harfsize test. I also same result only harf size result and can't get inverse FFT image&lt;/P&gt;
&lt;P&gt;by sample code in the Intel MKL manual.&lt;/P&gt;
&lt;P&gt;fortunately I can get a kind and nice answer from you soI can get a full size FFT result (I can see frequency information) butcan't get a inverse FFT&lt;/P&gt;
&lt;P&gt;Another member give a one clue normalization so I can get a FFT and IFFT but I can't get frequency information data&lt;/P&gt;
&lt;P&gt;I also check my project and code again and again.&lt;/P&gt;
&lt;P&gt;If you have a clue.&lt;/P&gt;
&lt;P&gt;Please advice for me.&lt;/P&gt;
&lt;P&gt;I'm very thanks to your kindness and help&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;all the best&lt;/P&gt;
&lt;P&gt;Dakin&lt;/P&gt;</description>
      <pubDate>Sat, 13 Mar 2010 01:15:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873018#M8648</guid>
      <dc:creator>Dakin</dc:creator>
      <dc:date>2010-03-13T01:15:37Z</dc:date>
    </item>
    <item>
      <title>MKL FFT and Inverse FFT</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873019#M8649</link>
      <description>&lt;P&gt;Dakin,&lt;/P&gt;
&lt;P&gt;Please add checking of DFTI status after all DFTI calls to be sure that all is OK.&lt;/P&gt;
&lt;P&gt;E.g. see MKLROOT/examples/dftc&lt;/P&gt;
&lt;P&gt; if (! DftiErrorClass(Status, DFTI_NO_ERROR)) {&lt;BR /&gt; printf(" TEST FAILED : after ....)\n");&lt;BR /&gt; failure++;&lt;BR /&gt; goto FREE_DESCRIPTOR;&lt;BR /&gt; }&lt;/P&gt;</description>
      <pubDate>Mon, 15 Mar 2010 07:18:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/MKL-FFT-and-Inverse-FFT/m-p/873019#M8649</guid>
      <dc:creator>barragan_villanueva_</dc:creator>
      <dc:date>2010-03-15T07:18:45Z</dc:date>
    </item>
  </channel>
</rss>

