正弦波“波瓣”(基础知识,可能是一个愚蠢的问题)

信息处理 混叠
2022-02-15 11:41:04

我开始尝试更深入地了解信号处理。我想知道我所看到的效果是否值得吐槽,或者是否有更深层次的理解是显而易见的,我没有掌握。

我最初是使用 Jupyter Notebook 来制作一些 Aliasing 的示例,以便我可以看到频率折返,并给自己一个工作空间来直观地理解这个概念。在尝试绘制正弦波之后,如果我没有在基于“采样率”的幂 2 的频率上创建正弦波,那么我会在正弦波中创建看起来像波瓣的东西。

我的初始代码如下所示

# Aliasing Example
import numpy as np
import matplotlib.pyplot as plot
import math

%matplotlib qt
plot.ion()
    
# Number of samples
N = pow(2,14) # 16,384 Samples

# Sampling Frequency
Fs = pow(2,14) # 16,384 Samples/second

# Sampling Frequency
T = 1/Fs # 1 second of data

# The amount of sampling time
time = np.linspace(0.0,(N-1)*T,N)

#Nyquist Frequency
Fn = (Fs/2)

# Number of lobes
num_lobes = 4

#Signal 1
f1 = 4096 - num_lobes/4
str1 = "Sine Wave @" + str(f1) + "Hz"
w1 = 2*math.pi*f1
sig1 = np.sin(w1*time)

fig1 = plot.figure()
ax = fig1.add_subplot()
ax.plot(time,sig1)
ax.set_title(str1)
ax.set_xlabel('Time')
ax.set_ylabel('Amplitude')

上图的情节看起来像在此处输入图像描述

看起来我的“采样频率”为 16384 Hz 和信号频率为 4097 Hz 之间存在相位差的累积。我不认为我已经探索过这是否真的意味着什么?这对我如何捕获数据有任何现实意义吗?我需要尝试满足才能正确重新创建/捕获数据的关系?如果我运行 FFT 或获取任何其他信号信息,我是否仍能获得正确的频谱功率值?

我想我正在考虑这种想法,如果我要在示波器上捕获它,我会认为我会同时收到多个信号,但它只是一个波。并且我对为我关注的信号设置采样没有正确的理解?

1个回答

您只是看到单个样本的幅度,而不是在它们之间传播的波。如果您生成高频正弦波,您会发现样本不一定会接近波的实际峰值。
在某些时候,您可能会想到,样本接近波形的峰值:

在此处输入图像描述

但在其他情况下,样本并不接近波形的实际峰值:

在此处输入图像描述

(这些都来自在 Ocenaudio 中以 48 kHz 采样的 12.001 kHz 波)

如果您只显示样本(就像您在 matplotlib 中一样,因为它只在它们之间进行线性插值),那么您将看到它是随着样本离实际峰值越来越近而上下移动的“波瓣”。但是样本所代表的实际波形不会上下波动,它是恒定的。