iPython notebook как альтернатива Matlab
#44

А вот пример как запилить коректирующий IIR по типу "линквица".

Для начала нада запилить фунцию конвертации аналогова фильтра в IIR. Там есть свои приколы, и даже несколько вариантов имплементации (импулс инвариант, билинейный).
Подробнее обсуждается сдесь: https://dsp.stackexchange.com/questions/...pole/19211
Примеры: http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt

Ну и тут как всегда удобно сделать свою библиотечку (во вложении). Принимает три параметра: вектор b вектор a и 1/fs синтезируемого iir

Использование выглядит приблизительно вот так:
Код:
from analog2iir import analog_iir
b_z_cor, a_z_cor = analog_iir(a_s, a_s_new, 1./fs)

(для моего примера fs = 96000.)

Собственно предидущая строка уже содержит то как делается коректирующий фильтр для системы (b_s, a_s) для получения желаемого отклика аналогичному для системы с (b_s_new, a_s_new) прт одинаковых a.

Собсна если кто помнит как делается "коректор Линквица". В числитель ставится знаменатель имеющейся системы, а в знаменатель - знаменатель целевой. Что я и сделал сразу вписав "a_s" и "a_s_new" в соотв места.

Для проверки хорошо бы исследовать АЧХ и ФЧХ исходной системы, целефой системы и корректирующего фильтра. Удобно использоваю уже имеюшиеся функции freqs и freqz

Код:
w_s, h_s = sp.signal.freqs(b_s, a_s, worN=np.logspace(1, 5, 1000)*2.*np.pi)
w_s_new, h_s_new = sp.signal.freqs(b_s_new, a_s_new, worN=np.logspace(1, 5, 1000)*2.*np.pi)
w_z, h_z = signal.freqz(b_z_cor, a_z_cor, worN=np.logspace(1, 5, 1000)*2.*np.pi/fs)

строим все это безобразие на графике:
Код:
plt.figure()
plt.plot(w_s/(2*np.pi), np.absolute(h_s))
plt.plot(fs*w_z/(2*np.pi), np.absolute(h_z))
plt.plot(w_s/(2*np.pi), np.absolute(h_s_new))
plt.xscale('log')
plt.yscale('log')
plt.xlim(10, 1e5)
plt.ylim(1e-5, 1)
plt.grid(which = 'both')
plt.show()

plt.figure()
plt.plot(w_s/(2*np.pi), np.angle(h_s))
plt.plot(w_s/(2*np.pi), np.angle(h_s_new))
plt.plot(fs*w_z/(2*np.pi), np.angle(h_z))
plt.xscale('log')
plt.xlim(10, 1e5)
plt.grid(which = 'both')
plt.show()

и получаем

[Изображение: N3pFBnz.png]

Для примера использовал следующие вводные:
Код:
fc = 500. #Hz
fc_new = 100. #Hz
w_s = 2.*np.pi*fc
w_s_new = 2.*np.pi*fc_new
q_s = 0.7
q_s_new = 0.7

b_s = np.array((np.square(1./w_s) , 0, 0))
a_s = np.array((np.square(1./w_s) , 1./(w_s*q_s) , 1))

b_s_new = np.array((np.square(1./w_s_new) , 0, 0))
a_s_new = np.array((np.square(1./w_s_new) , 1./(w_s_new*q_s_new) , 1))


При желании можно просимулировать сисемы во временной области (все эти ваши импульсные отклики или ступеньки) ипользуя готовые функции lsim и dlsim.

NB ну если где-то с чем-то промахнулся то просьба не пинать, это все-таки не моя специальность :)


Файлы вложений
.zip analog2iir.zip Размер: 306 байт  Загрузок: 3

"Найкраще сало то ковбаса." (с)
Ответ


Сообщения в этой теме
iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-22-2014, 02:15 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-22-2014, 02:22 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-22-2014, 02:30 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-22-2014, 06:46 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 05-12-2015, 07:56 PM
RE: iPython notebook как альтернатива Matlab - от naroznyv - 05-14-2015, 07:00 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-05-2015, 06:39 AM
RE: iPython notebook как альтернатива Matlab - от naroznyv - 11-05-2015, 06:42 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-05-2015, 06:45 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-05-2015, 06:38 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-09-2015, 05:36 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-10-2015, 05:11 PM
RE: iPython notebook как альтернатива Matlab - от nazar - 11-10-2015, 05:40 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-10-2015, 08:36 PM
RE: iPython notebook как альтернатива Matlab - от Altor Audio - 11-11-2015, 12:22 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-11-2015, 12:50 AM
RE: iPython notebook как альтернатива Matlab - от bobby_ii - 11-14-2015, 02:47 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-14-2015, 03:16 AM
RE: iPython notebook как альтернатива Matlab - от Alexey77 - 11-14-2015, 07:50 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-14-2015, 02:14 PM
RE: iPython notebook как альтернатива Matlab - от bobby_ii - 11-14-2015, 03:36 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-14-2015, 03:45 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-15-2015, 10:17 PM
RE: iPython notebook как альтернатива Matlab - от naroznyv - 11-24-2015, 12:54 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 11-30-2015, 09:40 PM
RE: iPython notebook как альтернатива Matlab - от begemot - 11-30-2015, 09:53 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 12-01-2015, 11:10 PM
RE: iPython notebook как альтернатива Matlab - от bobby_ii - 12-02-2015, 02:38 AM
RE: iPython notebook как альтернатива Matlab - от naroznyv - 12-02-2015, 03:21 AM
RE: iPython notebook как альтернатива Matlab - от bobby_ii - 12-02-2015, 03:39 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 12-02-2015, 04:14 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 01-07-2016, 05:22 AM
RE: iPython notebook как альтернатива Matlab - от nazar - 01-09-2016, 03:25 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 01-09-2016, 03:50 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 01-09-2016, 05:25 AM
RE: iPython notebook как альтернатива Matlab - от nazar - 01-09-2016, 08:52 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 01-09-2016, 03:46 PM
RE: iPython notebook как альтернатива Matlab - от nazar - 01-09-2016, 04:51 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 08-15-2016, 12:36 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 08-21-2016, 09:45 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 04-12-2017, 12:54 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 06-14-2017, 08:57 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 08-07-2017, 08:17 PM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 08-17-2017, 12:58 AM
RE: iPython notebook как альтернатива Matlab - от mellowman - 08-17-2017, 01:51 AM
RE: iPython notebook как альтернатива Matlab - от БендеровецЪ - 08-17-2017, 02:51 AM

Возможно похожие темы ...
Тема / Автор Ответы Просмотры Последний пост

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)