1
Я хочу синус с линейной частотой увеличения в диапазоне [f_start : f_stop]
с течением времени.Scot Frequency Sweep In Python
Однако при создании соответствующего сигнала в Python последний период примерно в два раза превышает ожидаемую частоту, 2*f_stop
.
Почему?
Здесь некоторый минимальный код Python, который иллюстрирует эту проблему:
import numpy
import matplotlib.pyplot as plt
Delta_t = 1 # Unit: Seconds
samples = 1000
total_time = samples*Delta_t
t = numpy.linspace(0,total_time,num=samples)
f_start = 1.0/total_time # slow frequency (Period T = 1/f_start = 1000 samples)
f_stop = 100.0/total_time # high frequency (Period T = 1/f_stop = 10 samples)
f_sweep = numpy.linspace(f_start,f_stop,num=samples) # Sweep from slow to high frequency
# Create Sinusoids
sinus_f_start = numpy.sin(2*numpy.pi*f_start*t)
sinus_f_stop = numpy.sin(2*numpy.pi*f_stop*t)
sinus_f_sweep = numpy.sin(2*numpy.pi*f_sweep*t)
# Plot all sinusoids
fig = plt.figure()
fig.add_subplot(311)
plt.plot(t,sinus_f_start)# Perfect! 1000 Samples per period.
fig.add_subplot(312)
plt.plot(t,sinus_f_stop) # Perfect! 10 Samples per period.
fig.add_subplot(313)
plt.plot(t,sinus_f_sweep)# Fail! Last period has 5 samples.
plt.show()
Спасибо! Для реализации линейной развертки частота w = 2 * PI * (f_start + k/2 * t) с k параметром наклона. – Jack
@Jack Если мы говорим, что аргумент синусоидальной функции является углом \ theta, и мы определяем угловую скорость как функцию времени (независимо от временной зависимости), нам нужно будет ИНТЕГРИРОВАТЬ угловую скорость по времени, т. Е. \ theta = \ theta_0 + \ int_ {t_0}^{t} \ omega (\ tau) d \ tau. Выражение, которое вы даете для линейного изменения угловой скорости, хорошо. Чао – gboffi