2013-12-05 2 views
2

Данные в массиве freq ниже не отсортированы.
Как удалить ненужную прямую линию на участке?

Есть ли удобный способ удалить ненужную прямую линию слева направо на моем участке?

import pylab as pl 
import numpy as np 
timepoints=np.loadtxt("timesequence",usecols=(1,),unpack=True,delimiter=",") 
t=np.histogram(timepoints,bins=500)[0] 
sp = np.fft.fft(t) 
freq = np.fft.fftfreq(t.shape[-1],d=0.0005) 
print freq 
pl.plot(freq*2*np.pi, np.sqrt(sp.real**2+sp.imag**2)) 
pl.show() 

enter image description here

ответ

1

Как вы его, сюжет начинается в точке пика ноль, затем работает свой путь направо, затем переходит в крайнее левое положение и работает свой путь назад к центру. Это НЕ простой вариант времени (справа налево), если это так, как вы думаете.

Одним из способов является построение положительных точек в «частоте» отдельно от отрицательных точек в «freq». Замените строку кода pl.plot следующим образом:

mask = freq>=0 
pl.plot(freq[mask]*2*np.pi, np.sqrt(sp[mask].real**2+sp[mask].imag**2)) 
pl.plot(freq[~mask]*2*np.pi, np.sqrt(sp[~mask].real**2+sp[~mask].imag**2)) 

ps, ​​Вам необходимо установить цвета, чтобы они соответствовали друг другу.

+1

no, используйте 'np.freqshift' http://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.fftshift.html, который существует именно для этой цели. – tacaswell

+0

Спасибо всем. 'np.fft.fftshift' - это прямой путь, но я не знаю явно выражения оси y. – questionhang

+0

как комарировать сюжет? – questionhang

Смежные вопросы