Трансиверы, передатчики, РПУ > Software Defined Radio (SDR)
Микрофонный ФНЧ - цифровой алгоритм?
VA7KL:
--- Цитата: ra0ahc от Февраль 19, 2022, 05:02:15 pm ---На языке С
--- Конец цитаты ---
Та я формулы легко перевожу в STM C, были бы они.
--- Цитата: Егм от Февраль 19, 2022, 09:52:25 am ---Фурье
--- Конец цитаты ---
Так для него же надо накопить буфер 1024 как минимум, желательно с перекрытием, потом оконную функцию, и все это надо в реальном времени...Не проще ли во временнОй области, FIR или IIR ? Я так Hilbert transform сделал и на прием и на передачу работает. А через ПФ пришлось бы делать и прямое и обратное, зануляя отрицательные коэффициенты.
Егм:
"У ти какой , привередливый " - автора не помню. 44443
--- Цитата: VA7KL от Февраль 19, 2022, 10:07:44 pm ---Так для него же надо накопить буфер 1024 как минимум, желательно с перекрытием, потом оконную функцию, и все это надо в реальном времени...
--- Конец цитаты ---
На STM задержка не очень большая будет .
Хотите по времени - фильтр КИХ3.xmcd считает нормированную импульсную характеристику(НИХ) ФНЧ .
0лег:
Добавлю еще один вариант расчета коэффициентов ФНЧ с КИХ (окно Кайзера) без MathCad.
Скрипт на Python. Для расчета использует библиотеки NumPy, SciPy.
Для построения графиков используется модуль pylab от MathPlotLib.
Сделан на основе вот этого скрипта https://scipy-cookbook.readthedocs.io/items/FIRFilter.html
Исходные данные:
1. Частота дискретизации
2. Частота среза ФНЧ
3. Минимальное значение ослабления, которое должен обеспечивать фильтр в полосе задерживания
4. Ширина полосы между частотой среза ФНЧ (полосой пропускани) и началом полосы задерживания. Этот параметр определяет крутизну ската фильтра и существенно влияет на необходимый порядок фильтра.
На выходе печатает количество коэффициентов (порядок фильтра) N и таблицу с номерами и значениями коэффициентов.
Также выводятся графики коэффициентов и АЧХ фильтра в пределах от 0 до частоты Найквиста
VA7KL:
Спасибо, есть в чем покопаться.
У себя в Матлабе нашел расчет IIR ФНЧ
Fs = 48000 Hz
Fp = 3000 Hz
Ap = 0.1 dB
Ast = 60 dB
N = 8
b = 0.001525705344423 -0.008066652791675 0.020768215408303 -0.034138713878115 0.039887774602053 -0.034138713878115 0.020768215408303 -0.008066652791675 0.001525705344423
a = 1.000000000000000 -7.010534851856182 21.847030639853834 -39.487511024935273 45.242951134156677 -33.630460181362238 15.832146586586743 -4.314632973475927 0.521076305105171
y(n) = b0*x(n) + b1*x(n-1) ... + bM*x(n-M) - a1*y(n-1) - ... - aM*y(n-M)
Егм:
--- Цитата: VA7KL от Февраль 21, 2022, 05:19:43 am ---y(n) = b0*x(n) + b1*x(n-1) ... + bM*x(n-M) - a1*y(n-1) - ... - aM*y(n-M)
--- Конец цитаты ---
Пришла дурная мысля :
А если тупо , вручную подбирать коэффициенты ?
В любой матсреде результат сразу будет видно .
Навигация
Перейти к полной версии