正负频率的matlab-frequency bin
Matlab-frequency bin of the positive and negative frequency
我正在使用 MATLAB 教程 Frequency-Domain Linear Regression。有一段代码,这里需要确定"frequency bin of the positive and negative frequency",对于fft和ifft,这部分代码:
freqbin = 72/12;
freqbins = [freqbin 72-freqbin]+1;
tsfit = zeros(72,1);
tsfit(freqbins) = tsdft(freqbins);
tsfit = ifft(tsfit);
mu = mean(ts);
tsfit = mu+tsfit;
时间序列长度为72,12个月为一个周期。怎么可能只有一个正频率的频率仓,我们怎么知道正好是 72/12+1(+1 是因为第一个仓是零频率),是某个公式还是什么?
让我们从一些一般说明开始。如果采样率为Fs
,FFT中的样本数为N
,则MATLAB索引为k
的bin的频率为:
f_k = (k-1) * Fs / N ;
或者,反过来,
k = f_k * N / Fs + 1;
因此,FFT向量的元素对应于频率0, Fs/N, 2*Fs/N, ..., (N-1)*Fs/N
。
请注意,频率对于偏移 Fs
是不变的。换句话说,f
和f+Fs
和f-Fs
都是等价的。因此,您可以认为 FFT 向量的前半部分对应于正频率(索引:1 到 N/2;频率:0
到 (N/2-1)/N*Fs
),而后半部分对应于负频率(索引:N/2+1 到 N;频率:-Fs/2
到 -Fs/N
)。在这里,为了简洁起见,我在正频率集中包含 0。
现在,进入您的具体示例:
N = 72
Fs = 12 ; % samples per year
因此,正频率范围为每年 0
到 Fs/2 = 6
个周期,分别对应索引 1 到 36。
您有兴趣找到与每年 1 个周期的频率对应的 FFT 样本。这对应于索引 1 * 72 / 12 + 1 = 7
。
由于 FFT 对于实信号是对称的,您也有兴趣找到对应于每年 -1 个周期的频率的 FFT 样本,使用移位不变性 属性,它也等效于 -1 + Fs = 11
每年的周期。对应的索引为(12-1) * 72 / 12 + 1 = 67
.
总之,
- 正数有36个(含0个),没有1个
- 该算法只对一个幅度最大的正频率感兴趣。
- 那个频率恰好是每年1个周期。对应的MATLAB索引为7.
- 频率的镜像为每年-1周期,对应MATLAB索引67。
我正在使用 MATLAB 教程 Frequency-Domain Linear Regression。有一段代码,这里需要确定"frequency bin of the positive and negative frequency",对于fft和ifft,这部分代码:
freqbin = 72/12;
freqbins = [freqbin 72-freqbin]+1;
tsfit = zeros(72,1);
tsfit(freqbins) = tsdft(freqbins);
tsfit = ifft(tsfit);
mu = mean(ts);
tsfit = mu+tsfit;
时间序列长度为72,12个月为一个周期。怎么可能只有一个正频率的频率仓,我们怎么知道正好是 72/12+1(+1 是因为第一个仓是零频率),是某个公式还是什么?
让我们从一些一般说明开始。如果采样率为Fs
,FFT中的样本数为N
,则MATLAB索引为k
的bin的频率为:
f_k = (k-1) * Fs / N ;
或者,反过来,
k = f_k * N / Fs + 1;
因此,FFT向量的元素对应于频率0, Fs/N, 2*Fs/N, ..., (N-1)*Fs/N
。
请注意,频率对于偏移 Fs
是不变的。换句话说,f
和f+Fs
和f-Fs
都是等价的。因此,您可以认为 FFT 向量的前半部分对应于正频率(索引:1 到 N/2;频率:0
到 (N/2-1)/N*Fs
),而后半部分对应于负频率(索引:N/2+1 到 N;频率:-Fs/2
到 -Fs/N
)。在这里,为了简洁起见,我在正频率集中包含 0。
现在,进入您的具体示例:
N = 72
Fs = 12 ; % samples per year
因此,正频率范围为每年 0
到 Fs/2 = 6
个周期,分别对应索引 1 到 36。
您有兴趣找到与每年 1 个周期的频率对应的 FFT 样本。这对应于索引 1 * 72 / 12 + 1 = 7
。
由于 FFT 对于实信号是对称的,您也有兴趣找到对应于每年 -1 个周期的频率的 FFT 样本,使用移位不变性 属性,它也等效于 -1 + Fs = 11
每年的周期。对应的索引为(12-1) * 72 / 12 + 1 = 67
.
总之,
- 正数有36个(含0个),没有1个
- 该算法只对一个幅度最大的正频率感兴趣。
- 那个频率恰好是每年1个周期。对应的MATLAB索引为7.
- 频率的镜像为每年-1周期,对应MATLAB索引67。