如何处理不需要的振幅?
What to do with unwanted amplitudes?
我正在研究信号处理应用程序。这个想法是为了过滤掉噪音,我发现我正在处理的大部分数据都呈正态分布。 (CLT)
我 运行 一个 FFT,正如预期的那样,数据看起来仍然像振幅的正态分布。但是我看过的每个数据集都有一个不寻常的幅度凸起,与平均值相差大约 4 个标准差。
我的问题是,这些振幅通常用来做什么?
这是频率振幅分布的示例:
我的第一个想法是简单地删除最远的振幅或将它们重新映射到更接近均值的位置(我使用了 rnorm ),但我相信其他人也遇到过同样的情况。
这是一个产生非常有趣结果的测试。略有不同的分布方式通常会产生离群值:
a <- rnorm(10000)
b <- rnorm(500,1,1)
u <- sample(union(a,b))
qplot(Re(fft(u)))
要看清你真正在问什么还是有点困难。如果您询问如何处理异常值,最好浏览 Cross Validated 上的问答。对于这个网站来说太宽泛了。
但是,如果您问的是为什么您的情节中出现了那个小颠簸,以及如何消除它,我想我可以提供帮助。
称它为离群值不太正确,它更像是傅里叶变换的产物。发生这种情况是因为您的信号有轻微的 DC offset,避免这种伪像的方法是消除这种直流偏移。消除它的最简单方法是均匀移动整个信号,使平均振幅为 0。这通常就足够了,但有时您必须去除信号趋势或应用高通滤波器。
set.seed(1)
sig1 <- sample(c(rnorm(1e4), rnorm(500, 1, 1)))
ft1 <- fft(sig1)
sig2 <- sig1 - mean(sig1)
ft2 <- fft(sig2)
yl <- c(-280, 430)
par(mfrow=c(2, 1), mar=c(2, 3, 0.1, 0.1))
plot(Re(ft1)[1:(length(ft1)/2)], type="l", ylim=yl, xlab="", ylab="Original")
plot(Re(ft2)[1:(length(ft2)/2)], type="l", ylim=yl, xlab="", ylab="Centred")
我正在研究信号处理应用程序。这个想法是为了过滤掉噪音,我发现我正在处理的大部分数据都呈正态分布。 (CLT)
我 运行 一个 FFT,正如预期的那样,数据看起来仍然像振幅的正态分布。但是我看过的每个数据集都有一个不寻常的幅度凸起,与平均值相差大约 4 个标准差。
我的问题是,这些振幅通常用来做什么?
这是频率振幅分布的示例:
我的第一个想法是简单地删除最远的振幅或将它们重新映射到更接近均值的位置(我使用了 rnorm ),但我相信其他人也遇到过同样的情况。
这是一个产生非常有趣结果的测试。略有不同的分布方式通常会产生离群值:
a <- rnorm(10000)
b <- rnorm(500,1,1)
u <- sample(union(a,b))
qplot(Re(fft(u)))
要看清你真正在问什么还是有点困难。如果您询问如何处理异常值,最好浏览 Cross Validated 上的问答。对于这个网站来说太宽泛了。
但是,如果您问的是为什么您的情节中出现了那个小颠簸,以及如何消除它,我想我可以提供帮助。
称它为离群值不太正确,它更像是傅里叶变换的产物。发生这种情况是因为您的信号有轻微的 DC offset,避免这种伪像的方法是消除这种直流偏移。消除它的最简单方法是均匀移动整个信号,使平均振幅为 0。这通常就足够了,但有时您必须去除信号趋势或应用高通滤波器。
set.seed(1)
sig1 <- sample(c(rnorm(1e4), rnorm(500, 1, 1)))
ft1 <- fft(sig1)
sig2 <- sig1 - mean(sig1)
ft2 <- fft(sig2)
yl <- c(-280, 430)
par(mfrow=c(2, 1), mar=c(2, 3, 0.1, 0.1))
plot(Re(ft1)[1:(length(ft1)/2)], type="l", ylim=yl, xlab="", ylab="Original")
plot(Re(ft2)[1:(length(ft2)/2)], type="l", ylim=yl, xlab="", ylab="Centred")