- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi,
I am trying to take FFT of a real signal and also the output should be a real signal. Thus, I useone of these functions :
Thanks in advance
I am trying to take FFT of a real signal and also the output should be a real signal. Thus, I useone of these functions :
ippsFFTFwd_RToPerm_32f
ippsFFTFwd_RToPack_32f
ippsFFTFwd_RToCCS_32f
However the output signal doesn't match with the Matlab output of fft function. Any idea?Thanks in advance
링크가 복사됨
9 응답
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Matlab output for a length of 8 array
4.000000
-1.414214
4.000000
1.414214
-4.000000
1.414214
4.000000
-1.414214
And by using these ippsfunctions,
ippsFFTInitAlloc_R_32f( &pSpec, 3, IPP_FFT_DIV_INV_BY_N, ippAlgHintNone );
ippsFFTFwd_RToCCS_32f(pX, pY, pSpec, pBuf);
I got these outputs:
4
0
-1.41421
-1.41421
4
-4
1.41421
-1.41421
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
You should have taken a look at the IPP documentation. For CCS, your output is as expected.
Look at the IPP definition of CCP, you'll see it there:
http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/ipp/ipps/ipps_ch7/ch7_packed_formats.html#CCS
Look at the IPP definition of CCP, you'll see it there:
http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/ipp/ipps/ipps_ch7/ch7_packed_formats.html#CCS
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Quoting sever70
Hi,
I am trying to take FFT of a real signal and also the output should be a real signal. Thus, I useone of these functions :
I am trying to take FFT of a real signal and also the output should be a real signal. Thus, I useone of these functions :
ippsFFTFwd_RToPerm_32f
ippsFFTFwd_RToPack_32f
ippsFFTFwd_RToCCS_32f
However the output signal doesn't match with the Matlab output of fft function. Any idea?As far as I know the Matlab does calculations usingDouble-Precision variables. The set of IPPSfunctions
you're using are Single-Precision ( ..._32f ). Could you submit a complete IPP Test-Case?
Best regards,
Sergey
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
There would only be a match if the output of matlap and of ipp was in the same "domain", I mean, of the same type.
FFT and DFT uses different data domains (types) for efficiency purposes.
For instance, if you data is purely real, you can hold its complex version is a so-called packed domain. This is much smaller the the full complex version and thus faster (better cache utilization etc.).
However, if you print packed data, it looks not at all like normal complex data. You would have to convert packed to complex before printing it.
I don't really know useful purpose of the CCS format, but if you simply select normal complex output format, and then print that (possible first converting to real format), I'm sure your comparison would understandable.
Do you understand my text?
FFT and DFT uses different data domains (types) for efficiency purposes.
For instance, if you data is purely real, you can hold its complex version is a so-called packed domain. This is much smaller the the full complex version and thus faster (better cache utilization etc.).
However, if you print packed data, it looks not at all like normal complex data. You would have to convert packed to complex before printing it.
I don't really know useful purpose of the CCS format, but if you simply select normal complex output format, and then print that (possible first converting to real format), I'm sure your comparison would understandable.
Do you understand my text?
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Hi Sever70,
Not sure Matlab's out put format. But same suggestion as Thomas,
The format is as below
and you may use the Transform Functions to get real complex result.
Best Regards,
Ying
Not sure Matlab's out put format. But same suggestion as Thomas,
The format is as below
| Index | 0 | 1 | 2 | 3 | . . . | N-2 | N-1 | N | N+1 |
|---|---|---|---|---|---|---|---|---|---|
| Pack | R0 | R1 | I1 | R2 | . . . | I(N-1)/2 | RN/2 | ||
| Perm | R0 | RN/2 | R1 | I1 | . . . | RN/2-1 | IN/2-1 | ||
| CCS | R0 | 0 | R1 | I1 | . . . | RN/2-1 | IN/2-1 | RN/2 | 0 |
| Index | 0 | 1 | 2 | 3 | . . . | N-2 | N-1 | N |
|---|---|---|---|---|---|---|---|---|
| Pack | R0 | R1 | I1 | R2 | . . . | R(N-1)/2 | I(N-1)/2 | |
| Perm | R0 | R1 | I1 | R2 | . . . | R(N-1)/2 | I(N-1)/2 | |
| CCS | R0 | 0 | R1 | I1 | . . . | I(N-1)/2-1 | R(N-1)/2 | I(N-1)/2 |
and you may use the Transform Functions to get real complex result.
| Function Base Name | Operation |
|---|---|
| Support Functions | |
| ConjPack | Converts the data inPack format to complex data format. |
| ConjPerm | Converts the data in Perm format to complex data format. |
| ConjCcs | Converts the data in CCS format to complex |
Best Regards,
Ying