FFT 后的幅度截止

信息处理 fft 频谱 噪音 振幅 r
2022-02-15 04:20:16

假设我有一个嘈杂的正弦波(作为 R 代码):

# Sampling frequency
fs <- 1000
# Sampling period
ts <- 1/fs
# Length of signal
l <- 1500
# Time vector
t <- seq(0, l - 1)*ts
# Signal
s <- 0.4*sin(2*pi*50*t) + sin(2*pi*120*t)
# Noise
x <- s + 2*rnorm(length(t))
# Plot signal
qplot(t, x) + geom_line()

并希望通过以下方式确定信号的幅度:

# FFT
y <- fft(x)
# Two-sided spectrum
p2 <- abs(y/l)
# Convert to one-sided spectrum
p1 <- p2[1:(l/2 + 1)]
p1[2:(length(p1) - 1)] <- 2*p1[2:(length(p1) - 1)]
# Define frequency
f <- fs*seq(0, l/2)/l
# Plot spectrum
qplot(f, p1) + geom_line()

如何确定频谱中的峰值是否确实是信号的幅度而不是噪声?是否有定义阈值的公式?

谢谢!

3个回答

您可能需要阅读 SS(频谱感知)技术。有一种著名的方法叫做“能量检测”。

别的

如果噪声是 WGN,那么它的 PSD 是恒定的。因此,在频谱的特定频率下,如果 PSD 在噪声附近,那么它就是噪声,否则就是信号。

我们可以在这里使用Otsu的方法吗?我在图像处理中使用它来区分图像的背景和前景。现在,我和 Pascal 对音频信号有同样的问题。

特别是,我们应该

  1. 查看音频频谱并找到阈值频率或
  2. 查看幅度的直方图并选择阈值幅度?

这是约翰 BG jgb2012@sky.com

1.- 在没有信号的情况下首先校准噪声,然后寻找信号。

在实验室里很容易,在现场,它可能很容易,也可能很复杂,这取决于不同的因素。

2.-因此,使用您的代码,您可以首先测量噪声,设置阈值,然后确定高于阈值的任何峰值都是信号,低于阈值的任何峰值都只是噪声。

3.- 您的采样必须足够快,以避免丢失可能在 2 个连续采样之间被忽视的短信号。

使用阈值,不可避免地会出现 BER 曲线,因为噪声是随机的,因此尽管噪声具有平均幅度,但瞬时噪声的变化方式可能低于阈值,然后可能会出现低于阈值的短信号,足够短且足够低,足以再次被忽视。因为阈值永远不会放在噪声上,所以总是有一定的开销必须添加。

4.- 你如何种植来捕捉重叠或太近的信号?如果 2 个信号太接近,您需要足够的频率分辨率来解决它们。

如果两个不同的信号在同一个频率上是正确的怎么办?

我之所以提到这一点,是因为在您的代码中,您会使用单个频谱图,我猜这将是幅度,但相位也可能有助于精确识别重叠信号。

5.- 远距离概率检测。

这是一个例子

https://www.researchgate.net/figure/Detection-prob-vs-Eb-N0_fig6_4325314

具有已知脉冲形状的 UWB 雷达和预先研究的场景:

如上所述,已经进行了现场测试,在没有“信号”或“目标”的情况下进行校准,然后可以评估检测的概率。

6.- 在这个例子中,Irfan 向我们展示了一些 MATLAB 代码来模拟 EbN0 上的概率误差

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.415.4700&rep=rep1&type=pdf

7.- 如安捷伦(现为是德科技)的 LTE 文档所示,

http://literature.cdn.keysight.com/litweb/pdf/ads2008/3gpplte/ads2008/3GPP_LTE_Design_Examples.html

验证承运人的另一种方法是测量

CCDF,因为您可以将载波分类为高于噪声阈值,但它仍然可能是没有携带有意义数据的干扰?

EVM,LTE的星座不能变形超过非常低的百分比