mars.tensor.fft.rfft#
- mars.tensor.fft.rfft(a, n=None, axis=-1, norm=None)[来源]#
计算实数输入的一维离散傅里叶变换。
该函数通过一种高效算法称为快速傅里叶变换(FFT)计算实值数组的一维n点离散傅里叶变换(DFT)。
- Parameters
- Returns
out – 被截断或零填充的输入,沿着axis指示的轴进行变换,如果未指定axis,则沿最后一个轴进行变换。如果n是偶数,变换轴的长度为
(n/2)+1。如果n是奇数,长度为(n+1)/2。- Return type
复合张量
- Raises
IndexError – 如果 axis 大于 a 的最后一个轴。
备注
当对纯实输入计算DFT时,输出是厄米对称的,即负频率项只是相应正频率项的复共轭,因此负频率项是多余的。该函数不计算负频率项,因此输出的变换轴的长度为
n//2 + 1。当
A = rfft(a)且 fs 是采样频率时,A[0]包含零频率项 0*fs,由于厄米对称性,这是实数。如果 n 是偶数,
A[-1]包含表示正负Nyquist频率(+fs/2和-fs/2)的项,并且必须是纯实数。如果 n 是奇数,fs/2处没有项;A[-1]包含最大正频率(fs/2*(n-1)/n),在一般情况下是复数。如果输入 a 包含虚部,它将被静默丢弃。
示例
>>> import mars.tensor as mt
>>> mt.fft.fft([0, 1, 0, 0]).execute() array([ 1.+0.j, 0.-1.j, -1.+0.j, 0.+1.j]) >>> mt.fft.rfft([0, 1, 0, 0]).execute() array([ 1.+0.j, 0.-1.j, -1.+0.j])
请注意,fft 输出的最后一个元素是第二个元素的复共轭,对于实数输入。对于rfft,这种对称性被利用来仅计算非负频率项。