admin 2025-08-14 07:06:41 世界杯的历史

采样频率至少是最高频率的两倍。采样周期不能超过周期的1/2.

nyquist频率是采样频率的1/2.

混叠效应、采样频率与 Nyquist 频率的理解

在信号处理和数字采样的过程中,采样频率、Nyquist 频率 以及 混叠效应(aliasing) 是非常重要的概念。本文将详细解释这些概念,并说明它们之间的相互关系。

1. 采样频率和奈奎斯特采样定理

根据奈奎斯特采样定理(Nyquist Sampling Theorem):

采样频率 fsf_sfs​ 必须至少是信号中存在的最高频率 fmaxf_{\text{max}}fmax​ 的两倍,以便信号能够被完整准确地重建。

公式表达为:

fs≥2⋅fmax

f_s \geq 2 \cdot f_{\text{max}}

fs​≥2⋅fmax​

其中:

fsf_sfs​ 是采样频率。fmaxf_{\text{max}}fmax​ 是信号中最高的频率成分。

当采样频率低于这个值时,就会引发混叠效应。

2. Nyquist 频率

Nyquist 频率 是采样频率的一半,表示信号在不产生混叠效应的情况下,能够准确采样的最大频率。公式为:

fN=fs2

f_N = \frac{f_s}{2}

fN​=2fs​​

其中:

fNf_NfN​ 是 Nyquist 频率。fsf_sfs​ 是采样频率。

如果信号中的频率成分高于 Nyquist 频率,则会产生混叠效应。

3. 混叠效应(aliasing)【频率对称性或者采样频率不够高】

当信号中包含的频率超过了 Nyquist 频率时,这些高于 fNf_NfN​ 的频率成分会被“折叠”回低频范围,导致错误的频率成分出现在频谱中。这个现象被称为混叠效应。

例如:

假设采样频率 fs=500 Hzf_s = 500 \, \text{Hz}fs​=500Hz,则 Nyquist 频率 fN=250 Hzf_N = 250 \, \text{Hz}fN​=250Hz。如果信号中存在 300 Hz300 \, \text{Hz}300Hz 的频率成分,那么这会被折叠到 200 Hz200 \, \text{Hz}200Hz,产生误导。

a. 频率对称

当我们对一个信号进行傅里叶变换时,信号的频谱会出现镜像效应,即频谱在正频率和负频率上都是对称的。由于我们通常只显示非负频率(即从 0 Hz 到最大频率的一半,即所谓的 Nyquist 频率),实际的频谱也包含镜像的频率信息。

然而,由于傅里叶变换的周期性特征,频谱会在采样频率的一半处发生对称(即 Nyquist 频率)。

b. 采样频率不够高 – 采样频率没有满足大于等于最高频率的两倍,但nyquist频率就是采样频率的1/2.

采样频率不足的概念

采样频率不够高,无法准确捕捉信号中的高频成分。当采样频率 fsf_sfs​ 不足时,也就是信号中有频率分量高于 Nyquist 频率 fNf_NfN​ 时,信号中的这些高频分量会被折叠(aliasing)到低频范围,导致错误的频率分量出现在频谱中。

4. 解决混叠效应的方法

提高采样频率:确保 fs≥2⋅fmaxf_s \geq 2 \cdot f_{\text{max}}fs​≥2⋅fmax​,即采样频率高于信号中最高频率的两倍。抗混叠滤波器:在采样前应用低通滤波器,滤除超过 Nyquist 频率的高频成分,防止混叠效应的产生。

5. 总结

采样频率必须大于信号最大频率的两倍,才能避免混叠效应。Nyquist 频率是采样频率的一半,是信号能准确重建的最大频率。混叠效应会导致高频分量“折叠”回低频范围,产生错误的频谱结果。

import numpy as np

import matplotlib.pyplot as plt

from scipy.fftpack import fft, ifft

# 创建两个简单的信号

t = np.linspace(0, 1, 500) # 时间范围

f1 = 5 # 第一个信号的频率

f2 = 20 # 第二个信号的频率

# 时域信号

x_t = np.sin(2 * np.pi * f1 * t) # 第一个正弦信号

w_t = np.sin(2 * np.pi * f2 * t) # 第二个正弦信号

# 时域相乘的信号

mul_t = x_t * w_t

# 傅里叶变换到频域

X_w = fft(x_t)

W_w = fft(w_t)

Mul_w = fft(mul_t)

# 频域卷积

conv_w = np.convolve(X_w, W_w, mode='same')

# 逆傅里叶变换回时域

conv_t = ifft(conv_w)

# 可视化

plt.figure(figsize=(12, 10))

# 时域信号

plt.subplot(3, 2, 1)

plt.plot(t, x_t)

plt.title('Signal x(t) in Time Domain')

plt.subplot(3, 2, 2)

plt.plot(t, w_t)

plt.title('Signal w(t) in Time Domain')

# 相乘的时域信号

plt.subplot(3, 2, 3)

plt.plot(t, mul_t)

plt.title('x(t) * w(t) in Time Domain')

# 频域信号

plt.subplot(3, 2, 4)

plt.plot(np.abs(X_w))

plt.title('X(ω) in Frequency Domain')

plt.subplot(3, 2, 5)

plt.plot(np.abs(W_w))

plt.title('W(ω) in Frequency Domain')

# 卷积后的频域结果

plt.subplot(3, 2, 6)

plt.plot(np.abs(conv_w))

plt.title('Convolution Result in Frequency Domain')

plt.tight_layout()

plt.show()

在代码中,采样频率可以通过采样点数(即 t 数组的长度)和信号的时间范围(即 t 数组的最大值减最小值)来计算。

具体来说:

t = np.linspace(0, 1, 500) 生成了 500 个采样点,表示时间从 0 到 1 秒。

采样频率 fsf_sfs​ 可以定义为:

fs=采样点数总时间

f_s = \frac{\text{采样点数}}{\text{总时间}}

fs​=总时间采样点数​

在你的代码中,总时间是 1 秒,采样点数是 500,所以采样频率 fsf_sfs​ 是 500 Hz。

结论:

该信号的采样频率为 500 Hz。

傅里叶变换的性质:

在频域中,傅里叶变换会捕捉信号中的正负频率,即对于每个实数信号,频域表示中会有两个对称的频率分量。具体来说,正弦信号的频谱表现为在正频率和负频率上各有一个峰值。因此,如果时域信号 x(t)x(t)x(t) 是一个频率为 5 Hz 的正弦波,那么它在频域中的傅里叶变换将会在 +5 Hz 和 -5 Hz 处各有一个显著的频率成分。

双频成分的原因:

正弦信号可以表示为复指数形式:

sin⁡(2πft)=12j(ej2πft−e−j2πft)

\sin(2\pi f t) = \frac{1}{2j} \left( e^{j 2\pi f t} - e^{-j 2\pi f t} \right)

sin(2πft)=2j1​(ej2πft−e−j2πft)

在频域中,傅里叶变换会捕捉到这两个指数形式,对应于频率 +f+f+f 和 −f-f−f。因此,尽管在时域上它只是一个 5 Hz 的信号,但在频域上我们会看到两个对称的峰值,分别位于 +5 Hz+5 \, \text{Hz}+5Hz 和 −5 Hz-5 \, \text{Hz}−5Hz。