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 | filter_zp2ab (complex_t *z, int nz, complex_t *p, int np, int ord, double *b, double *a) |
Функция пересчета нулей и полюсов аналогового фильтра в коэффициенты передаточной характеристики \( 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 строка 209
Используется в 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
:
Результат работы программы:
В каталоге dat
будут созданы три файла:
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным:
См. определение в файле butter_ap.c строка 172
◆ 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 строка 207
Используется в 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 строка 179
◆ 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 строка 204
Используется в 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 строка 182
◆ 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 строка 216
Используется в 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 строка 191
◆ 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 строка 213
Используется в ellip_ap().
◆ filter_zp2ab()
Функция пересчета нулей и полюсов аналогового фильтра в коэффициенты передаточной характеристики \( 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
игнорируется и не сохраняется.
См. определение в файле filter_zp2ab.c строка 166
Используется в butter_ap(), cheby1_ap(), cheby2_ap() и 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 строка 146
Используется в 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 строка 147
Используется в 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 строка 180
Используется в bilinear(), low2high() и low2low().
Создано системой 1.8.17