已编辑
单音信号有 1 个频率:
双音是通过使用 2 个频率创建的:
我如何在绘图上定义这种差异,无论它是否是单音信号?
已编辑
单音信号有 1 个频率:
双音是通过使用 2 个频率创建的:
我如何在绘图上定义这种差异,无论它是否是单音信号?
要么,取决于我们如何看待它:
一个常见的经验规则是,如果(例如),将它们分开 - 否则,单个幅度调制音调,其中是“载波”并且 “调制器”。
这可以在时频表示中观察到:
但如果我们真的想要,我们可以通过增加窗口的频率分辨率,让 STFT 将它们分别表示:
import numpy as np
from scipy.signal import windows
from ssqueezepy import stft
from ssqueezepy.visuals import imshow, plot
def cosines(freqs, N):
t = np.linspace(0, 1, N)
return np.sum([np.cos(2*np.pi * f * t) for f in freqs], axis=0)
N = 2048
t = np.linspace(0, 1, N)
x1 = cosines([50, 250], N)
x2 = cosines([50, 60], N)
Sx1, Sx2 = stft(x1), stft(x2)
stft_freqs = np.linspace(0, .5, len(Sx1)) * N
plot(t, x1, title="f1, f2 = 50, 250", show=1)
plot(t, x2, title="f1, f2 = 50, 60", show=1)
kw = dict(abs=1, xticks=t, yticks=stft_freqs,
xlabel="time [sec]", ylabel="frequency [Hz]")
imshow(Sx1, **kw, title="abs(STFT) | f1, f2 = 50, 250")
imshow(Sx2, **kw, title="abs(STFT) | f1, f2 = 50, 60")
Sx2_2 = stft(x2, windows.dpss(N, 4), n_fft=2048)
stft_freqs = np.linspace(0, .5, len(Sx2_2)) * N
kw['yticks'] = stft_freqs
imshow(Sx2_2, **kw, title="abs(STFT), frequency-localized | f1, f2 = 50, 60")
kw['yticks'] = stft_freqs[:128]
imshow(Sx2_2[:128], **kw, title="frequency-zoomed (same STFT)")
单音信号有 1 个频率:
那不是单音信号。那是一个常数。这缺少时间依赖性!
你的意思是
在实值上下文中,这将是一个单音;在复杂信号的上下文中(您之前一直在谈论 OFDM,所以这可能是您想要工作的上下文),这是一个由两个复杂音调组成的信号:一个在,一个在。
双音是通过使用 2 个频率创建的:
不,根本不。即使把它写成
这与您的第一个信号相同,但频率。
所以,我认为你可能真的有一些数学基础是错误的;我很乐意帮助你,但我认为你只是在你的脑海中有一个错误的定义,我无法解决任何问题:(