libdspl-2.0

Функции

int butter_ap (double rp, int ord, double *b, double *a)
 Расчет передаточной характеристики $ H(s) $ аналогового нормированного ФНЧ Баттерворта. Подробнее...
 
int butter_ap_zp (int ord, double rp, complex_t *z, int *nz, complex_t *p, int *np)
 Расчет массивов нулей и полюсов передаточной функции $ H(s) $ аналогового нормированного ФНЧ Баттерворта. Подробнее...
 
int cheby1_ap (double rp, int ord, double *b, double *a)
 Расчет передаточной характеристики $ H(s) $ аналогового нормированного ФНЧ Чебышёва первого рода. Подробнее...
 
int cheby1_ap_zp (int ord, double rp, complex_t *z, int *nz, complex_t *p, int *np)
 Расчет массивов нулей и полюсов передаточной функции $ H(s) $ аналогового нормированного ФНЧ Чебышёва первого рода. Подробнее...
 
int cheby2_ap (double rs, int ord, double *b, double *a)
 Расчет передаточной характеристики $ H(s) $ аналогового нормированного ФНЧ Чебышёва второго рода. Подробнее...
 
int cheby2_ap_zp (int ord, double rs, complex_t *z, int *nz, complex_t *p, int *np)
 Расчет массивов нулей и полюсов передаточной функции $ H(s) $ аналогового нормированного ФНЧ Чебышёва второго рода. Подробнее...
 
int filter_zp2ab (complex_t *z, int nz, complex_t *p, int np, int ord, double *b, double *a)
 Функция пересчета нулей и полюсов аналогового фильтра в коэффициенты передаточной характеристики $ H(s) $. Подробнее...
 

Подробное описание

Функции расчета цифровых БИХ-фильтров.

Функции

int butter_ap ( double  Rp,
int  ord,
double *  b,
double *  a 
)

Расчет передаточной характеристики $ H(s) $ аналогового нормированного ФНЧ Баттерворта.


Функция рассчитывает коэффициенты передаточной характеристики $H(s)$ аналогового нормированного ФНЧ Баттерворта порядка ord с частотой среза 1 рад/с по уровню $ -R_p $ дБ.

Аргументы
[in]RpНеравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

[in]ordПорядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции $H(s)$ равно ord+1.

[out]bУказатель на вектор коэффициентов числителя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

[out]aУказатель на вектор коэффициентов знаменателя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

Возвращает
RES_OK Фильтр рассчитан успешно.

В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org
int butter_ap_zp ( int  ord,
double  rp,
complex_t z,
int *  nz,
complex_t p,
int *  np 
)

Расчет массивов нулей и полюсов передаточной функции $ H(s) $ аналогового нормированного ФНЧ Баттерворта.


Функция рассчитывает значения нулей и полюсов передаточной функции $ H(s)$ аналогового нормированного ФНЧ Баттерворта порядка ord с частотой среза 1 рад/с по уровню $-R_p$ дБ.

Аргументы
[in]ordПорядок фильтра.
[in]rpНеравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

[out]zУказатель на массив комплексных нулей передаточной характеристики $ H(s)$.
Максимальный размер вектора вектора [ord x 1].
Память должна быть выделена.

[out]nzУказатель на переменную количества нулей передаточной характеристики $ H(s)$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор z.
Память должна быть выделена.

[out]pУказатель на массив комплексных полюсов передаточной характеристики $ H(s)$.
Максимальный размер вектора вектора [ord x 1].
Память должна быть выделена.

[out]npУказатель на переменную количества полюсов передаточной характеристики $ H(s)$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор p.
Память должна быть выделена.

Возвращает
RES_OK Массивы нулей и полюсов рассчитаны успешно.
В противном случае код ошибки.
Заметки
Нормированный ФНЧ Баттерворта не имеет нулей, поэтому массив нулей z не будет изменен, а по указателю nz будет записан 0.
Автор
Бахурин Сергей www.dsplib.org
int cheby1_ap ( double  Rp,
int  ord,
double *  b,
double *  a 
)

Расчет передаточной характеристики $ H(s) $ аналогового нормированного ФНЧ Чебышёва первого рода.


Функция рассчитывает коэффициенты передаточной характеристики $ H(s)$ аналогового нормированного ФНЧ Чебышёва первого рода порядка ord с частотой среза 1 рад/с по уровню $-R_p$ дБ.

Особенностью фильтра Чебышёва первого рода являются равноволновые пульсации АЧХ в полосе пропускания.

Аргументы
[in]RpНеравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

[in]ordПорядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции $ H(s)$ равно ord+1.

[out]bУказатель на вектор коэффициентов числителя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

[out]aУказатель на вектор коэффициентов знаменателя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

Возвращает
RES_OK Фильтр рассчитан успешно.

В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org
int cheby1_ap_zp ( int  ord,
double  rp,
complex_t z,
int *  nz,
complex_t p,
int *  np 
)

Расчет массивов нулей и полюсов передаточной функции $ H(s) $ аналогового нормированного ФНЧ Чебышёва первого рода.


Функция рассчитывает значения нулей и полюсов передаточной функции $ H(s)$ аналогового нормированного ФНЧ Чебышёва первого рода порядка ord с частотой среза 1 рад/с по уровню $-R_p$ дБ, с неравномерностью в полосе пропускания $ R_p $ дБ.

Аргументы
[in]ordПорядок фильтра.
[in]rpНеравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.

[out]zУказатель на массив комплексных нулей передаточной характеристики $ H(s)$.
Максимальный размер вектора вектора [ord x 1].
Память должна быть выделена.

[out]nzУказатель на переменную количества нулей передаточной функции $H(s)$.
По данному указателю будет записано количество нулей фильтра, которые были рассчитаны и помещены в вектор z.
Память должна быть выделена.

[out]pУказатель на массив комплексных полюсов передаточной характеристики $H(s)$.
Максимальный размер вектора вектора [ord x 1].
Память должна быть выделена.

[out]npУказатель на переменную количества полюсов передаточной функции $ H(s)$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор p.
Память должна быть выделена.

Возвращает
RES_OK Массивы нулей и полюсов рассчитаны успешно.
В противном случае код ошибки.
Заметки
Нормированный ФНЧ Чебышёва первого рода не имеет нулей, поэтому массив нулей z не будет изменен, а по указателю nz будет записан 0.
Автор
Бахурин Сергей www.dsplib.org
int cheby2_ap ( double  Rs,
int  ord,
double *  b,
double *  a 
)

Расчет передаточной характеристики $ H(s) $ аналогового нормированного ФНЧ Чебышёва второго рода.


Функция рассчитывает коэффициенты передаточной характеристики $H(s)$ аналогового нормированного ФНЧ Чебышёва второго рода порядка ord с частотой заграждения 1 рад/с по уровню $-R_s$ дБ.

Особенностью фильтра Чебышёва второго рода являются:
1) равноволновые пульсации АЧХ в полосе заграждения.
2) уровень АЧХ $H(j\cdot 1) = -R_s$ дБ.

Аргументы
[in]RsУровень подавления в полосе пропускания (дБ).
Значение должно быть положительным.

[in]ordПорядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции $H(s)$ равно ord+1.

[out]bУказатель на вектор коэффициентов числителя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

[out]aУказатель на вектор коэффициентов знаменателя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

Возвращает
RES_OK Фильтр рассчитан успешно.
В противном случае код ошибки.
Автор
Бахурин Сергей www.dsplib.org
int cheby2_ap_zp ( int  ord,
double  rs,
complex_t z,
int *  nz,
complex_t p,
int *  np 
)

Расчет массивов нулей и полюсов передаточной функции $ H(s) $ аналогового нормированного ФНЧ Чебышёва второго рода.


Функция рассчитывает значения нулей и полюсов передаточной функции $H(s)$ аналогового нормированного ФНЧ Чебышёва второго рода порядка ord с частотой заграждения 1 рад/с по уровню $-R_s$ дБ.

Аргументы
[in]ordПорядок фильтра.
[in]rsУровень подавления АЧХ в полосе загражения (дБ).
Параметр задает уровень подавления сигнала в полосе частот от 1 рад/с и выше.
Значение должно быть положительным.

[out]zУказатель на массив комплексных нулей передаточной характеристики $H(s)$.
Максимальный размер вектора вектора [ord x 1].
Память должна быть выделена.

[out]nzУказатель на переменную количества нулей передаточной функции $H(s)$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор z.
Память должна быть выделена.

[out]pУказатель на массив комплексных полюсов передаточной характеристики $H(s)$.
Максимальный размер вектора вектора [ord x 1].
Память должна быть выделена.

[out]npУказатель на переменную количества полюсов передаточной функции $H(s)$.
По данному укащзателю будет записано количество нулей фильтра, которые были рассчитны и помещены в вектор p.
Память должна быть выделена.

Возвращает
RES_OK Массивы нулей и полюсов рассчитаны успешно.
В противном случае код ошибки.

Пример использования функции cheby2_ap_zp:

#include <stdio.h>
#include <stdlib.h>
#include "dspl.h"
#define ORD 7
int main()
{
    void* handle;           // DSPL handle
    handle = dspl_load();   // Load DSPL function
    complex_t z[ORD], p[ORD];    
    int nz, np, k;
    double Rs = 40.0;
    
    int res = cheby2_ap_zp(ORD, Rs, z, &nz, p, &np);
    if(res != RES_OK)
        printf("error code = 0x%8x\n", res);
    
    printf("\nChebyshev type 2 zeros:\n");
    for(k = 0; k < nz; k++)
        printf("z[%2d] = %9.3f  %9.3f j\n", k, RE(z[k]), IM(z[k]));
    printf("\nChebyshev type 2 poles:\n");
    for(k = 0; k < np; k++)
        printf("p[%2d] = %9.3f  %9.3f j\n", k, RE(p[k]), IM(p[k]));
    dspl_free(handle);      // free dspl handle
    return 0;
}

Результат работы программы:

    Chebyshev type 2 zeros:
    z[ 0] =  0.000    1.026 j
    z[ 1] =  0.000   -1.026 j
    z[ 2] =  0.000    1.279 j
    z[ 3] =  0.000   -1.279 j
    z[ 4] =  0.000    2.305 j
    z[ 5] =  0.000   -2.305 j

    Chebyshev type 2 poles:
    p[ 0] = -1.203    0.000 j
    p[ 1] = -0.113    0.772 j
    p[ 2] = -0.113   -0.772 j
    p[ 3] = -0.398    0.781 j
    p[ 4] = -0.398   -0.781 j
    p[ 5] = -0.852    0.642 j
    p[ 6] = -0.852   -0.642 j
Автор
Бахурин Сергей www.dsplib.org
int filter_zp2ab ( complex_t z,
int  nz,
complex_t p,
int  np,
int  ord,
double *  b,
double *  a 
)

Функция пересчета нулей и полюсов аналогового фильтра в коэффициенты передаточной характеристики $ H(s) $.


\[ H(s) = \frac{\sum_{n = 0}^{N_z} b_n \cdot s^n}{\sum_{m = 0}^{N_p} a_m \cdot s^m} = \frac{\prod_{n = 0}^{N_z}(s-z_n)}{\prod_{m = 0}^{N_p} (s-p_m)} \]

Аргументы
[in]zУказатель на массив нулей передаточной характеристики.
Размер вектора [nz x 1].
Указатель может быть NULL если фильтр не имеет конечных нулей (nz=0).

[in]nzРазмер вектора нулей передаточной характеристики (может быть равен 0).

[in]pУказатель на массив полюсов передаточной характеристики.
Размер вектора [np x 1].
Указатель не может быть NULL.
Память должна быть выделена.

[in]npРазмер вектора полюсов передаточной характеристики (не может быть равен 0).

[in]ordПорядок фильтра для которого рассчитаны нули и полюса.
Количество коэффициентов числителя и знаменателя передаточной функции $H(s)$ равно ord+1.

[out]bУказатель на вектор коэффициентов числителя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

[out]aУказатель на вектор коэффициентов знаменателя передаточной функции $H(s)$.
Размер вектора [ord+1 x 1].
Память должна быть выделена.

Возвращает
RES_OK Пересчет произведен успешно.
В противном случае код ошибки.
Заметки
Функция возвращает вещественные значения коэффициентов b и a передаточной функции. Это означает, что вектора нулей и полюсов должны хранить вещественные значения или комплексно-сопряженные пары нулей и полюсов, потому что мнимая часть коэффициентов b и a игнорируется и не сохраняется.
Автор
Бахурин Сергей www.dsplib.org