Форум сайта python.su
Привет!
Возникла проблема. Необходимо отфильтровать сигнал режекторным фильтром (пакеты отвечающие за Signal Processing numpy и scipy(модуль signal)). Фильтр вроде бы соорудила (пользуясь имеющимися функциями модуля signal). Но получаемый результат, т.е. отфильтрованный сигнал ничем не отличается от исходного. Наверное я что-то недопонимаю. Если кто-то увидит в чем дело помогите пожалуйста!!!
А вот и сам код
from numpy import *
from scipy import *
from scipy import signal
import matplotlib.pyplot as plt
# считываю с файла данные напряжения и времени (зависимость напряжения от времени)
#x - данные напряжения
#t - данные времени
# создаю фильтр-прототип Чебышева 1 рода (ФНЧ):
z,p,k=signal.cheb1ap(5,0.5) #входные параметры n=5-порядок и R=0.5-уровень пульсаций
#выходные параметры - нули и полюсы прототипа
# трансформирую нули и полюсы в коэффициенты полинома
b,a=signal.zpk2tf(z,p,k)
# задаю нижнюю и верхнюю частоту среза (в Гц):
w1=100
w2=500
w0=2*math.pi*math.sqrt(w1*w2) # средняя частота
Bw=2*math.pi*(w2-w1) # полоса пропускания
# преобразую ФНЧ Чебышева в режекторный фильтр:
b1,a1=signal.lp2bs(b,a,w0,Bw)
# затем делаю преобразование Фурье над данными напряжения:
m=fft(x)
# осуществляю непосредственную фильтрацию:
h=signal.lfilter(b1,a1,m)
# делаю обратное преобразование Фурье над полученными данными:
l=ifft(h)
# строю график
plt.plot(t,l)
plt.show ()
Офлайн
Вам скорей на форум электротехники (или что это?!) Разве что не импортирован модуль math, но тогда бы интерпретатор выдавал ошибку…
Так что смотрите правильна ли логика. Ну и на всякий проверьте то ли вы читаете из файла и нет ли шанса что то, что вы получили и есть ответ :D
Офлайн
у тебя он(режекторный фильтр) цифровой?
Отредактировано (Янв. 12, 2010 13:40:12)
Офлайн
какие данные, что получаешь, ответь !!!
Офлайн
Ага, режекторный. Вообщем в итоге выходной сигнал идентичный входному. Я вырисовываю спектр полученного сигнала, на котором отчетливо видно, что ничего не вырезалось, т.е. все вырезаемые частоты на месте(не обнулились).
Офлайн
Цифровой , режекторный.
Офлайн
Однозначно дело в фильтре. Пробовала его на разных сигналах. Причем как на реальных, полученных при экспериментах с датчиков, так и сгенереных самостоятельно.
Офлайн