Programmer Guide/Command Reference/EVAL/fft: Difference between revisions
From STX Wiki
< Programmer Guide | Command Reference | EVAL
Jump to navigationJump to search
No edit summary |
No edit summary |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 14: | Line 14: | ||
:;<var>n</var>: desired length of analysis window; | :;<var>n</var>: desired length of analysis window; | ||
::*If <code>''n'' < nrow(''x'')</code>, the analysis window length L is set to nrow(''x''), otherwise L is set to ''n''. | ::*If <code>''n'' < nrow(''x'')</code>, the analysis window length L is set to nrow(''x''), otherwise L is set to ''n''. | ||
::*If the analysis window length L is a power of 2 (L=2 | ::*If the analysis window length L is a power of 2 (L=2<sup>M</sup>), the '''fft''' algorithm is used, otherwise the '''dft''' is used. | ||
::*If L is greater than [[../nrow|nrow(''x'')]], zero padding is applied to the signal. | ::*If L is greater than [[../nrow|nrow(''x'')]], zero padding is applied to the signal. | ||
:;<var>ytype</var>: select the type and format of the computed spectrum (default=0) | :;<var>ytype</var>: select the type and format of the computed spectrum (default=0) → see '''Result 3''' | ||
:;<var>poffset</var>: offset in samples to the signal begin or the selected ''zero phase'' position (default=0) | :;<var>poffset</var>: offset in samples to the signal begin or the selected ''zero phase'' position (default=0) | ||
:::{|class="keinrahmen" | :::{|class="keinrahmen" | ||
|''poffset''='''0''' || | |''poffset''='''0''' ||→ <code>phase[i] = atan2(im[i], re[i])</code> | ||
|- | |- | ||
|otherwise || | |otherwise ||→ <code>phase[i] = (atan2(im[i], re[i]) - 2*pi*i/L * ''poffset'') % (2 * pi)</code> | ||
|} | |} | ||
:;<var>prange</var>: selects the range of phase values (default=0) | :;<var>prange</var>: selects the range of phase values (default=0) | ||
:::{|class="keinrahmen" | :::{|class="keinrahmen" | ||
|''prange''='''0'' || | |''prange''='''0''' ||→ <code>0 ≤ phase[i] < 2*pi</code> | ||
|- | |- | ||
|otherwise || | |otherwise ||→ <code>-pi ≤ phase[i] < pi</code> | ||
|} | |} | ||
:;<var>aref</var>: reference amplitude if the log. spectrum (''ytype''=4) is requested (default=1) | :;<var>aref</var>: reference amplitude if the log. spectrum (''ytype''=4) is requested (default=1) | ||
Line 60: | Line 60: | ||
|} | |} | ||
---- | ---- | ||
;See also: [[ | ;See also: [[../ifft|ifft]], [[../dft|dft]], [[../dct|dct]], [[../cepstrum|cepstrum]], [[../lpc|lpc]], [[../complex arithmetic|complex arithmetic]] | ||
[[ | [[../#Functions|<function list>]] |
Latest revision as of 19:22, 21 April 2011
Compute the discrete fourier transform of a real signal using the fft or the dft algorithm.
- Usage 1
fft(n)
- n
- desired signal window length (scalar)
- Result 1
- The next (nearest) possible signal window length.
- Usage 2
fft(x)
- x
- signal vector or matrix; if x is a matrix a spectrum of each column is computed
- Result 2
- A matrix y with ncol(x) columns and L+2 rows, where each column y[*,j] contains the complex spectrum of the column (channel) x[*,j]. The transformation length L is set to npow2(nrow(x)).
- Usage 3
fft(x, n {, ytype, poffset, prange, aref})
- x
- signal vector or matrix; if x is a matrix a spectrum of each column is computed
- n
- desired length of analysis window;
- If
n < nrow(x)
, the analysis window length L is set to nrow(x), otherwise L is set to n. - If the analysis window length L is a power of 2 (L=2M), the fft algorithm is used, otherwise the dft is used.
- If L is greater than nrow(x), zero padding is applied to the signal.
- If
- ytype
- select the type and format of the computed spectrum (default=0) → see Result 3
- poffset
- offset in samples to the signal begin or the selected zero phase position (default=0)
poffset=0 → phase[i] = atan2(im[i], re[i])
otherwise → phase[i] = (atan2(im[i], re[i]) - 2*pi*i/L * poffset) % (2 * pi)
- prange
- selects the range of phase values (default=0)
prange=0 → 0 ≤ phase[i] < 2*pi
otherwise → -pi ≤ phase[i] < pi
- aref
- reference amplitude if the log. spectrum (ytype=4) is requested (default=1)
- Result 3
- A matrix y with ncol(x) columns, where each column y[*,j] contains the spectrum of the column (channel) x[*,j]. The type and the length of the spectra is selected by the argument ytype.
ytype description content of y[*,j] nrow(y) 0 complex spectrum in cartesian format { re0, im0, re1, im1, ... }
L+2 1 complex spectrum in polar format { amp0, phase0, amp1, phase1, ... }
with: ampi=sqrt(rei2 + imi2),
phasei see poffsetL+2 2 amplitude spectrum { amp0, amp1, ... }
L+1 3 power spectrum { amp02, amp12, ... }
L+1 4 logarithmic amplitude spectrum { lev0, lev1, ... }
with: levi=20*log10(ampi/aref)L+1