2014-09-23 5 views
1

나는 시간이 지남에 따라 [f_start : f_stop] 범위의 선형 증가 주파수를 갖는 부비동을 원합니다.플롯 주파수 스윕 파이썬에서

그러나 파이썬에서 적절한 신호를 만들 때 마지막주기는 예상 주파수의 두 배인 2*f_stop입니다.

왜? 여기

문제 설명 최소한의 파이썬 코드 :

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() 

답변

3
sin(w*t) => the angular velocity is d(w*t)/dt = w 

sin(w*t*t) => the angular velocity is d(w*t*t)/dt = 2*w*t 

을 따라서

+0

당신을 감사 최대 주파수에서 두 배로 인식! 선형 스윕을 실현하는 ordetr에서 주파수는 w = 2 * PI * (f_start + k/2 * t)이며 k는 기울기 매개 변수입니다. – Jack

+0

@Jack 사인 함수의 인수가 각도 \ theta이고 시간의 함수로 각속도를 지정하면 (시간 의존성에 관계없이) 시간에 대한 각속도를 통합해야합니다. 즉 \ theta = \ theta_0 + \ int_ {t_0}^{t} \ omega (\ tau) d \ tau. 각속도의 선형 변화에 대한 표현은 괜찮습니다. 차오 – gboffi

관련 문제