为什么我的线性调频频谱图频率加倍
Why am i getting doubled frequency for chirp spectrogram
我写了这段代码来生成线性 fmcw 线性调频:
def generate_fmcw(BW, Tc, Fs, initial_phase=0, num_chirps=2, delay=0):
t = np.arange(0, Tc-1/Fs, 1 / Fs)
nsamples = len(t)
w = 2 * pi * np.linspace(0, BW, nsamples)
return np.tile(np.cos(w * (t-delay) + initial_phase), num_chirps)
使用时:
BW = 1e6
Tc = 2e-3
Fs = 2e6
num_chirps = 1
和这个使用 scipy 和 pyplot:
的声谱图函数
import matplotlib.pyplot as plt
from scipy import signal
def display_spectrogram(s,fs):
f, t, Sxx = signal.spectrogram(s, fs,mode='magnitude')
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
我有一些欠采样行为:
a = generate_fmcw(BW, Tc,Fs,num_chirps=1)
display_spectrogram(a,Fs)
undersampled fmcw chirp
但是当我使用 :
Fs = 4e6
我得到了我想要的两倍最大频率(即 BW):
double frequency
为什么我会出现这种奇怪的行为?根据奈奎斯特定理,我正在使用正确的采样频率...
要创建线性调频等时变频率,cos
的参数必须是时变频率的积分。另一种说法是:对于函数 θ(t),cos(θ(t)) 的瞬时频率是 θ'(t)(θ(t) 的导数)。您的表达式基本上等同于 c*(t-d)**2 + i
,其导数是 2*c*t - c*d
,因此频率加倍。解决方案是调整cos
的自变量,使表达式的导数为所需的时变频率。
此外,您可能对 scipy.signal.chirp
感兴趣。
我写了这段代码来生成线性 fmcw 线性调频:
def generate_fmcw(BW, Tc, Fs, initial_phase=0, num_chirps=2, delay=0):
t = np.arange(0, Tc-1/Fs, 1 / Fs)
nsamples = len(t)
w = 2 * pi * np.linspace(0, BW, nsamples)
return np.tile(np.cos(w * (t-delay) + initial_phase), num_chirps)
使用时:
BW = 1e6
Tc = 2e-3
Fs = 2e6
num_chirps = 1
和这个使用 scipy 和 pyplot:
的声谱图函数import matplotlib.pyplot as plt
from scipy import signal
def display_spectrogram(s,fs):
f, t, Sxx = signal.spectrogram(s, fs,mode='magnitude')
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()
我有一些欠采样行为:
a = generate_fmcw(BW, Tc,Fs,num_chirps=1)
display_spectrogram(a,Fs)
undersampled fmcw chirp
但是当我使用 :
Fs = 4e6
我得到了我想要的两倍最大频率(即 BW): double frequency
为什么我会出现这种奇怪的行为?根据奈奎斯特定理,我正在使用正确的采样频率...
要创建线性调频等时变频率,cos
的参数必须是时变频率的积分。另一种说法是:对于函数 θ(t),cos(θ(t)) 的瞬时频率是 θ'(t)(θ(t) 的导数)。您的表达式基本上等同于 c*(t-d)**2 + i
,其导数是 2*c*t - c*d
,因此频率加倍。解决方案是调整cos
的自变量,使表达式的导数为所需的时变频率。
此外,您可能对 scipy.signal.chirp
感兴趣。