![]() |
libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
|
Функции | |
int | bilinear (double *bs, double *as, int ord, double *bz, double *az) |
Билинейное преобразование передаточной характеристики аналогового фильтра \(H(s)\), в передаточную характеристику цифрового фильтра \(H(z)\). Подробнее... | |
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 | ellip_ap (double rp, double rs, int ord, double *b, double *a) |
Расчет передаточной характеристики \( H(s) \) аналогового нормированного эллиптического ФНЧ. Подробнее... | |
int | ellip_ap_zp (int ord, double rp, double rs, complex_t *z, int *nz, complex_t *p, int *np) |
Расчет массивов нулей и полюсов передаточной функции \( H(s) \) аналогового нормированного эллиптического ФНЧ. Подробнее... | |
int | iir (double rp, double rs, int ord, double w0, double w1, int type, double *b, double *a) |
Функция расчета коэффициентов передаточной характеристики \(H(z)\) цифрового фильтра БИХ. Подробнее... | |
int | low2high (double *b, double *a, int ord, double w0, double w1, double *beta, double *alpha) |
Частотное преобразование ФНЧ-ФВЧ Подробнее... | |
int | low2low (double *b, double *a, int ord, double w0, double w1, double *beta, double *alpha) |
Частотное преобразование ФНЧ-ФНЧ Подробнее... | |
int | ratcompos (double *b, double *a, int n, double *c, double *d, int p, double *beta, double *alpha) |
Рациональная композиця Подробнее... | |
Подробное описание
Функции расчета цифровых БИХ-фильтров.
Функции
◆ bilinear()
int bilinear | ( | double * | bs, |
double * | as, | ||
int | ord, | ||
double * | bz, | ||
double * | az | ||
) |
Билинейное преобразование передаточной характеристики аналогового фильтра \(H(s)\), в передаточную характеристику цифрового фильтра \(H(z)\).
Функция рассчитывает коэффициенты передаточной характеристики \(H(z)\) цифрового фильтра путем дробно-рациональной подстановки вида
\[ s \leftarrow \frac{1 - z^{-1}}{1 + z^{-1}}. \]
Порядок цифрового фильтра при этом остается равным порядку аналогового фильтра, а ось частот \(\Omega\) аналогового фильтра связана c осью частот \(\omega\) цифрового фильтра соотношением:
\[ \Omega = \tan(\omega / 2). \]
- Аргументы
-
[in] bs Указатель на вектор коэффициентов числителя передаточной функции \(H(s)\) исходного аналогового фильтра.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in] as Указатель на вектор коэффициентов знаменателя передаточной функции \(H(s)\) исходного аналогового фильтра.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in] ord Порядок фильтра.
Количество коэффициентов числителя и знаменателя передаточных функций \(H(s)\) и \(H(z)\) аналогового и цифрового фильтров равноord+1
.
[out] bz Указатель на вектор коэффициентов числителя передаточной функции \(H(z)\) полученного цифрового фильтра.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[out] az Указатель на вектор коэффициентов знаменателя передаточной функции \(H(z)\) полученного цифрового фильтра.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
— фильтр рассчитан успешно.
В противном случае код ошибки.
Пример использования функции bilinear
:
Данная программа производит расчет передаточной характеристики аналогового фильтра Чебышева первого рода, с частотой среза равной 1 рад/с, и производит билинейное преобразование в цифровой, с частотой среза равной 0.5.
Результат работы программы:
bz[0] = 0.246 az[0] = 4.425 bz[1] = 0.983 az[1] = -3.318 bz[2] = 1.474 az[2] = 4.746 bz[3] = 0.983 az[3] = -2.477 bz[4] = 0.246 az[4] = 1.034 err = 0
Кроме этого производится расчет АЧХ полученного цифрового фильтра и строится график АЧХ пакетом GNUPLOT

См. определение в файле bilinear.c строка 210
Используется в iir().
◆ butter_ap()
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
— фильтр рассчитан успешно.
В противном случае код ошибки.
Пример использования функцииbutter_ap
:
Результат работы программы:
b[ 0] = 1.965 a[ 0] = 1.965 b[ 1] = 0.000 a[ 1] = 3.138 b[ 2] = 0.000 a[ 2] = 2.505 b[ 3] = 0.000 a[ 3] = 1.000
В каталоге dat
будут созданы три файла:
butter_ap_test_mag.txt АЧХ фильтра butter_ap_test_phi.txt ФЧХ фильтра butter_ap_test_tau.txt ГВЗ фильтра
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным:

См. определение в файле butter_ap.c строка 173
◆ butter_ap_zp()
Расчет массивов нулей и полюсов передаточной функции \( 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.
Пример программы рассчета нулей и полюсов нормированного ФНЧ Баттерворта:
Результат выполнения программы:
Butterworth filter zeros: 0 Butterworth filter poles: 7 p[ 0] = -1.101 +0.000 j p[ 1] = -0.245 +1.074 j p[ 2] = -0.245 -1.074 j p[ 3] = -0.687 +0.861 j p[ 4] = -0.687 -0.861 j p[ 5] = -0.992 +0.478 j p[ 6] = -0.992 -0.478 j
В каталоге dat
будет создан файл butter_ap_zp.txt
.
Пакет GNUPLOT произведет построение карты полюсов по сохранненным в dat/butter_ap_zp.txt
данным:

См. определение в файле butter_ap_zp.c строка 211
Используется в butter_ap().
◆ cheby1_ap()
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
— фильтр рассчитан успешно.
В противном случае код ошибки.
Пример использования функцииcheby1_ap
:
Результат работы программы:
b[ 0] = 0.125 a[ 0] = 0.177 b[ 1] = 0.000 a[ 1] = 0.405 b[ 2] = 0.000 a[ 2] = 1.169 b[ 3] = 0.000 a[ 3] = 0.582 b[ 4] = 0.000 a[ 4] = 1.000
В каталоге dat
будут созданы три файла:
cheby1_ap_test_mag.txt АЧХ фильтра cheby1_ap_test_phi.txt ФЧХ фильтра cheby1_ap_test_tau.txt ГВЗ фильтра
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным:

См. определение в файле cheby1_ap.c строка 181
◆ cheby1_ap_zp()
Расчет массивов нулей и полюсов передаточной функции \( 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.
Пример программы рассчета нулей и полюсов нормированного ФНЧ Чебышева первого рода:
Результат выполнения программы:
Chebyshev type 1 filter zeros: 0 Chebyshev type 1 filter poles: 7 p[ 0] = -0.256 +0.000 j p[ 1] = -0.057 +1.006 j p[ 2] = -0.057 -1.006 j p[ 3] = -0.160 +0.807 j p[ 4] = -0.160 -0.807 j p[ 5] = -0.231 +0.448 j p[ 6] = -0.231 -0.448 j
В каталоге dat
будет создан файл cheby1_ap_zp.txt
.
Пакет GNUPLOT произведет построение карты полюсов по сохранненным в dat/cheby1_ap_zp.txt
данным:

См. определение в файле cheby1_ap_zp.c строка 205
Используется в cheby1_ap().
◆ cheby2_ap()
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]
.
Память должна быть выделена.
Пример использования функцииcheby1_ap
:
Результат работы программы:
b[ 0] = 0.008 a[ 0] = 0.008 b[ 1] = 0.000 a[ 1] = 0.068 b[ 2] = 0.008 a[ 2] = 0.300 b[ 3] = 0.000 a[ 3] = 0.774 b[ 4] = 0.001 a[ 4] = 1.000
В каталоге dat
будут созданы три файла:
cheby2_ap_test_mag.txt АЧХ фильтра cheby2_ap_test_phi.txt ФЧХ фильтра cheby2_ap_test_tau.txt ГВЗ фильтра
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным:

- Возвращает
RES_OK
— фильтр рассчитан успешно.
В противном случае код ошибки.
См. определение в файле cheby2_ap.c строка 184
◆ cheby2_ap_zp()
Расчет массивов нулей и полюсов передаточной функции \( 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
:
Пример программы рассчета нулей и полюсов нормированного ФНЧ Чебышева первого рода:
Результат выполнения программы:
Chebyshev type 2 filter zeros: 6 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 filter poles: 7 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
В каталоге dat
будет создан файлы cheby2_ap_z.txt
и cheby2_ap_z.txt
, хранящие наборы нулей и полюсов на комплексной плоскости.
Пакет GNUPLOT произведет построение карты полюсов по сохранненным в dat/cheby2_ap_z.txt
и dat/cheby2_ap_p.txt
данным:

См. определение в файле cheby2_ap_zp.c строка 220
Используется в cheby2_ap().
◆ ellip_ap()
int ellip_ap | ( | double | rp, |
double | rs, | ||
int | ord, | ||
double * | b, | ||
double * | a | ||
) |
Расчет передаточной характеристики \( H(s) \) аналогового нормированного эллиптического ФНЧ.
Функция рассчитывает коэффициенты передаточной характеристики \(H(s)\) аналогового нормированного эллиптического ФНЧ порядка ord
с частотой среза 1 рад/с по уровню \(-R_p\) дБ.
Особенностью эллиптического фильтра являются равноволновые пульсации АЧХ как в полосе пропускания, так и в полосе заграждения, в результате чего обеспечиваеся минимальная переходная полоса фильтра.
- Аргументы
-
[in] rp Уровень пульсаций в полосе пропускания (дБ).
Значение должно быть положительным.
[in] rs Уровень подавления в полосе заграждения (дБ).
Значение должно быть положительным.
[in] ord Порядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции \(H(s)\) равноord+1
.
[out] b Указатель на вектор коэффициентов числителя передаточной функции \(H(s)\).
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[out] a Указатель на вектор коэффициентов знаменателя передаточной функции \(H(s)\).
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
Пример использования функцииellip_ap
:
Результат работы программы:
b[ 0] = 0.268 a[ 0] = 0.301 b[ 1] = 0.000 a[ 1] = 0.764 b[ 2] = 0.045 a[ 2] = 1.472 b[ 3] = 0.000 a[ 3] = 0.948 b[ 4] = 0.001 a[ 4] = 1.000
В каталоге dat
будут созданы три файла:
ellip_ap_test_mag.txt АЧХ фильтра ellip_ap_test_phi.txt ФЧХ фильтра ellip_ap_test_tau.txt ГВЗ фильтра
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным:

- Возвращает
RES_OK
— фильтр рассчитан успешно.
В противном случае код ошибки.
См. определение в файле ellip_ap.c строка 193
◆ ellip_ap_zp()
Расчет массивов нулей и полюсов передаточной функции \( H(s) \) аналогового нормированного эллиптического ФНЧ.
- Аргументы
-
[in] ord Порядок фильтра.
[in] rp Неравномерность АЧХ в полосе пропускания (дБ).
Параметр задает уровень искажений в полосе от 0 до 1 рад/с.
Значение должно быть положительным.
[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
:
Пример программы рассчета нулей и полюсов нормированного эллиптического ФНЧ :
Результат выполнения программы:
Elliptic filter zeros: 6 z[ 0] = 0.000 +1.053 j z[ 1] = 0.000 -1.053 j z[ 2] = 0.000 +1.136 j z[ 3] = 0.000 -1.136 j z[ 4] = 0.000 +1.626 j z[ 5] = 0.000 -1.626 j Elliptic filter poles: 7 p[ 0] = -0.358 +0.000 j p[ 1] = -0.011 +1.000 j p[ 2] = -0.011 -1.000 j p[ 3] = -0.060 +0.940 j p[ 4] = -0.060 -0.940 j p[ 5] = -0.206 +0.689 j p[ 6] = -0.206 -0.689 j
В каталоге dat
будет создан файлы ellip_ap_z.txt
и ellip_ap_z.txt
, хранящие наборы нулей и полюсов на комплексной плоскости.
Пакет GNUPLOT произведет построение карты полюсов по сохранненным в dat/ellip_ap_z.txt
и dat/ellip_ap_p.txt
данным:

См. определение в файле ellip_ap_zp.c строка 220
Используется в ellip_ap().
◆ iir()
int iir | ( | double | rp, |
double | rs, | ||
int | ord, | ||
double | w0, | ||
double | w1, | ||
int | type, | ||
double * | b, | ||
double * | a | ||
) |
Функция расчета коэффициентов передаточной характеристики \(H(z)\) цифрового фильтра БИХ.
Функция рассчитывает коэффициенты передаточной характеристики \(H(z)\) цифрового фильтра, которые могут быть использованы в функции filter_iir
- Аргументы
-
[in] rp Уровень неравномерности квадрата АЧХ в полосе пропускания фильтра (дБ).
Размер вектора[ord+1 x 1]
.
[in] rs Уровень подавления в полосе заграждения фильтра (дБ).
[in] ord Порядок фильтра.
Количество коэффициентов числителя и знаменателя передаточной функции \(H(z)\) цифрового фильтров равноord+1
.
Для полосовых и режекторных фильтров параметрord
должен быть чётным.
[in] w0 Нормированная частота среза ФНЧ или ФВЧ, или левая частота среза для полосового и режекторного фильтра.
[in] w1 Правая частота среза полосового и режекторного фильтра.
Данный параметр игнорируется для ФНЧ и ФВЧ.
[in] type Тип фильтра.
Данный параметр определяет тип фильтра и образуется набором флагов типа фильтра:
DSPL_FILTER_LPF - фильтр нижних частот; DSPL_FILTER_HPF - фильтр верхних частот; DSPL_FILTER_BPASS - полосовой фильтр; DSPL_FILTER_BSTOP - режекторный фильтр,
а также флагов типа аппроксимации АЧХ фильтра:DSPL_FILTER_BUTTER - фильтр Баттерворта; DSPL_FILTER_CHEBY1 - фильтр Чебышева первого рода; DSPL_FILTER_CHEBY2 - фильтр Чебышева второго рода; DSPL_FILTER_ELLIP - эллиптический фильтр.
[out] b Указатель на вектор коэффициентов числителя передаточной функции \(H(z)\).
Размер вектораord+1
.
Память должна быть выделена.
[out] a Указатель на вектор коэффициентов знаменателя передаточной функции \(H(z)\).
Размер вектораord+1
.
Память должна быть выделена.
- Возвращает
RES_OK
— Фильтр рассчитан успешно.
В противном случае код ошибки.
Пример использования функции:
Данная программа производит расчет коэффициентов фильтров при различном сочетании флагов параметра type
.
Кроме этого производится расчет АЧХ полученных цифровых фильтров и выводится на график АЧХ пакетом GNUPLOT

◆ low2high()
int low2high | ( | double * | b, |
double * | a, | ||
int | ord, | ||
double | w0, | ||
double | w1, | ||
double * | beta, | ||
double * | alpha | ||
) |
Частотное преобразование ФНЧ-ФВЧ
Функция производит перобразование передаточной функции \( H(s) \) аналогового ФНЧ с частотой среза w0
рад/c в передаточную функцию \( F(s) \) аналоговго ФВЧ с частотой среза w1
рад/c.
Неравномерность АЧХ в полосе пропускания, уровень подавления в полосе заграждения и порядок фильтра остаются неизменными.
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции \(H(s)\) исходного аналогового ФНЧ.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in] a Указатель на вектор коэффициентов знаменателя передаточной функции \(H(s)\) исходного аналогового ФНЧ.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in] ord Порядок исходного фильтра и фильтра после переобразования.
[in] w0 Частота среза исходного ФНЧ.
[in] w1 Требуемая частота среза ФВЧ после преобразования.
[in,out] beta Указатель на вектор коэффициентов числителя передаточной функции \(F(s)\) ФВЧ после преобразования.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in,out] alpha Указатель на вектор коэффициентов знаменателя передаточной функции \(F(s)\) аналогового ФВЧ после преобразования.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
— преобразование рассчитано успешно.
В противном случае код ошибки.
См. определение в файле low2high.c строка 148
Используется в iir().
◆ low2low()
int low2low | ( | double * | b, |
double * | a, | ||
int | ord, | ||
double | w0, | ||
double | w1, | ||
double * | beta, | ||
double * | alpha | ||
) |
Частотное преобразование ФНЧ-ФНЧ
Функция производит преобразование передаточной функции \( H(s) \) аналогового ФНЧ с частотой среза w0
рад/c в передаточную функцию \( F(s) \) аналоговго ФНЧ с частотой среза w1
рад/c.
Неравномерность АЧХ в полосе пропускания, уровень подавления в полосе заграждения и порядок фильтра остаются неизменными.
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции \(H(s)\) исходного аналогового ФНЧ.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in] a Указатель на вектор коэффициентов знаменателя передаточной функции \(H(s)\) исходного аналогового ФНЧ.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in] ord Порядок исходного фильтра и фильтра после преобразования.
[in] w0 Частота среза исходного ФНЧ.
[in] w1 Требуемая частота среза ФНЧ после преобразования.
[in,out] beta Указатель на вектор коэффициентов числителя передаточной функции \(F(s)\) ФНЧ после преобразования.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
[in,out] alpha Указатель на вектор коэффициентов знаменателя передаточной функции \(F(s)\) аналогового ФНЧ после преобразования.
Размер вектора[ord+1 x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
— Преоборазование расчитано успешно.
В противном случае код ошибки.
См. определение в файле low2low.c строка 149
Используется в iir().
◆ ratcompos()
int ratcompos | ( | double * | b, |
double * | a, | ||
int | n, | ||
double * | c, | ||
double * | d, | ||
int | p, | ||
double * | beta, | ||
double * | alpha | ||
) |
Рациональная композиця
Функция рассчитывает композицию вида \(Y(s) = (H \circ F)(s) = H(F(s))\), где
\[ H(s) = \frac{\sum\limits_{m = 0}^{n} b_m s^m} {\sum\limits_{k = 0}^{n} a_k s^k}, \quad F(s) = \frac{\sum\limits_{m = 0}^{p} d_m s^m} {\sum\limits_{k = 0}^{p} c_k s^k}, \quad Y(s) = \frac{\sum\limits_{m = 0}^{n p} \beta_m s^m} {\sum\limits_{k = 0}^{n p} \alpha_k s^k} \]
Функция рациональной композиции необходима для произведения частотных преобразований передаточных характеристик аналоговых и цифровых фильтров, а также для билинейного преобразования передаточных характеристик аналоговых фильтров в соответствующие передаточные характеристики цифровых фильтров.
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя функции \(H(s)\).
Размер вектора[n+1 x 1]
.
Память должна быть выделена.
[in] a Указатель на вектор коэффициентов знаменателя функции \(H(s)\).
Размер вектора[n+1 x 1]
.
Память должна быть выделена.
[in] n Порядок полиномов рациональной функции \(H(s)\).
[in] c Указатель на вектор коэффициентов числителя функции \(F(s)\).
Размер вектора[p+1 x 1]
.
Память должна быть выделена.
[in] d Указатель на вектор коэффициентов знаменателя функции \(F(s)\).
Размер вектора[p+1 x 1]
.
Память должна быть выделена.
[in] p Порядок полиномов рациональной функции \(F(s)\).
[in,out] beta Указатель на вектор коэффициентов числителя функции \(Y(s) = (H \circ F)(s)\).
Размер вектора[n*p+1 x 1]
.
Память должна быть выделена.
[in,out] alpha Указатель на вектор коэффициентов знаменателя функции \(Y(s) = (H \circ F)(s)\).
Размер вектора[n*p+1 x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
— Рациональная композиция рассчитана успешно.
В противном случае код ошибки.
См. определение в файле ratcompos.c строка 184
Используется в bilinear(), low2high() и low2low().
Документация по libdspl-2.0. Последние изменения: Ср 5 Янв 2022 12:44:35. Создано системой