The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Резонатор и режектор

Резонатор и режектор

Предыдущая  Содержание  Следующая  V*D*V

Обычно используется звено 2-го порядка.

Коэффициенты находятся по формулам:

где:

w - центральная частота, рад/сек

g - полоса частот по уровню -3 дБ, рад/сек

 

Фильтрация выполняется следующим образом:

 

out = a * input + b * z1 + c * z2

z2 = z1

z1 = out

 

Резонатор можно использовать как фильтр низкой частоты. Для этого случая частота приравнивается нулю, а полоса выбирается равной удвоенной частоте.

Работа резонатора

Амплитуда отклика резонатора зависит от добротности, то есть от отношения частота/полоса. Таким образом, амплитуда отклика резонатора с параметрами F=2000 Гц, W=100 Гц в 2 раза больше, чем амплитуда отклика резонатора с параметрами F=1000 Гц, W=100 Гц.

Замечание

Умные книжки говорят, что подобный вид формул справедлив, только если частота намного превосходит полосу.

Полный вид формулы для коэффициента b такой:

Решение, когда частота меньше полосы для меня непонятно. Однако, такая ситуация часто встречается на практике...

Режектор

Формулы выглядят следующим образом:

сначала по вышеприведенным формулам для резонатора ищутся коэффициенты, затем преобразуются по формулам:

 

a = 1 / a

b = -b * a

c = -c * a

 

Фильтрация выполняется следующим образом:

 

out = a * input + b * z1 + c * z2

z2 = z1

z1 = input

Замечание

При реализации режектора по вышеприведенным формулам отклик не вполне соответствует ожидаемому. В чем тут дело, мне не вполне понятно. Тем не менее, при использовании частоты режектирования меньше 4000 Гц наблюдается сильное увеличение амплитуды выходного сигнала. Также наблюдается рост спектра примерно 6 дБ на октаву в выходном сигнале. В общем, использовать его надо с осторожностью.

Код

/**

* по материалам:

* Klatt D.H. Software for cascade/parallel synthesizer

*

* параметры:

* frequency - центральная частота

* width - полоса по уровню -3 дБ, характеризует потери

* type - тип: true-резонатор или false-режектор

* выходной сигнал пропорционален частоте, 6дБ/октаву

*/

public class Resonator {

 private int m_fr;

 private int m_wd;

 private boolean m_type;

 public double a;

 private double b;

 private double c;

 private double z1;

 private double z2;

 //

 public Resonator() {

         m_fr = 0;

         m_wd = 0;

         a = 1.0;

         b = 0.0;

         c = 0.0;

         z1 = 0.0;

         z2 = 0.0;

 }

 public Resonator(int frequency, int width, int sampleRate, boolean type) {

         init( frequency, width, sampleRate, type );

 }

 public void init(int frequency, int width, int sampleRate, boolean type) {

         m_fr = frequency;

         m_wd = width;

         m_type = type;

         double arg = -Math.PI * width / sampleRate;

         double r = Math.exp( arg );

         c = -(r * r);

         arg = 2.0 * Math.PI * frequency / sampleRate;

         b = r * Math.cos( arg ) * 2.0;

         a = (1.0 - b - c);

         if( !type ) {

                 a = 1.0 / a;

                 b *= -a;

                 c *= -a;

         }

 }

 public int getFrequency() { return m_fr; }

 public int getWidth() { return m_wd; }

 public double proc(double sample) {

         double out = a * sample + b * z1 + c * z2;

         z2 = z1;

         if( m_type ) z1 = out;

         else z1 = sample;

         return out;

 }

}

Предыдущая  Содержание  Следующая