![]() |
libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
|
Функции | |
int | filter_freq_resp (double *b, double *a, int ord, double *w, int n, int flag, double *mag, double *phi, double *tau) |
Расчет амплитудно-частотной (АЧХ), фазочастотной характеристик (ФЧХ), а также группового времени запаздывания (ГВЗ) цифрового или аналогового или фильтра. Подробнее... | |
int | freqs (double *b, double *a, int ord, double *w, int n, complex_t *h) |
Расчет комплексного коэффициента передачи \( H(j \omega) \) аналогового фильтра. Подробнее... | |
int | freqz (double *b, double *a, int ord, double *w, int n, complex_t *h) |
Расчет комплексного коэффициента передачи \( H \left(e^{j \omega} \right)\) цифрового фильтра. Подробнее... | |
int | group_delay (double *pb, double *pa, int ord, int flag, double *w, int n, double *tau) |
Расчет группового времени запаздывания цифрового или аналогового фильтра. Подробнее... | |
int | phase_delay (double *b, double *a, int ord, int flag, double *w, int n, double *tau) |
Расчет фазовой задержки цифрового или аналогового фильтра. Подробнее... | |
Подробное описание
Функции анализа аналоговых и цифровых фильтров
Функции
◆ filter_freq_resp()
int filter_freq_resp | ( | double * | b, |
double * | a, | ||
int | ord, | ||
double * | w, | ||
int | n, | ||
int | flag, | ||
double * | mag, | ||
double * | phi, | ||
double * | tau | ||
) |
Расчет амплитудно-частотной (АЧХ), фазочастотной характеристик (ФЧХ), а также группового времени запаздывания (ГВЗ) цифрового или аналогового или фильтра.
Функция рассчитывает АЧХ, ФЧХ и ГВЗ аналогового или цифрового фильтра, заданного передаточной характеристикой \(H(s)\), или \(H(z)\) соответственно
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции \( H(s) \).
Размер вектора[ord+1 x 1]
.
[in] a Указатель на вектор коэффициентов знаменателя передаточной функции \( H(s) \).
Размер вектора[ord+1 x 1]
.
[in] ord Порядок фильтра. Количество коэффициентов числителя и знаменателя передаточной функции \( H(s) \) равно ord+1
.
[in] w Указатель на вектор значений циклической частоты \( \omega \) (рад/с), для которого будет рассчитаны АЧХ, ФЧХ и ГВЗ аналогового фильтра, если установлен флаг DSPL_FLAG_ANALOG
.
В случае если флагDSPL_FLAG_ANALOG
не установлен, то вектор частотыw
используется как нормированная частота комплексного коэффициента передачи \( H \left(\mathrm{e}^{j\omega} \right) \) цифрового фильтра.
В этом случае характеристика цифрового фильтра является \( 2\pi \)-периодической, и вектор частоты может содержать произвольные значения, однако целесообразно задавать его от 0 до \( \pi \), а такжет от 0 до \( 2\pi \), или от \( -\pi \) до \( \pi \).
Размер вектора[n x 1]
.
[in] n Размер вектора циклической частоты w
.
[in] flag Комбинация флагов, которые задают расчет параметров:
DSPL_FLAG_ANALOG Коэффициенты относятся к аналоговому фильтру DSPL_FLAG_LOGMAG АЧХ рассчитывать в логарифмическом масштабе DSPL_FLAG_UNWRAP раскрывать периодичность ФЧХ
[out] mag Указатель на вектор АЧХ.
Размер вектора[n x 1]
.
Память должна быть выделена.
Если указательNULL
, то расчет АЧХ не производится.
[out] phi Указатель на вектор ФЧХ.
Размер вектора[n x 1]
.
Память должна быть выделена.
Если указательNULL
, то расчет ФЧХ не производится.
[out] tau Указатель на вектор ГВЗ.
Размер вектора[n x 1]
.
Память должна быть выделена.
Если указательNULL
, то расчет ГВЗ не производится.
- Возвращает
RES_OK
Параметры фильтра рассчитаны успешно.
В противном случае код ошибки.
Пример использования функцииfilter_freq_resp
:
Результат работы программы:
b[ 0] = 1.002 a[ 0] = 1.002 b[ 1] = 0.000 a[ 1] = 2.618 b[ 2] = 0.000 a[ 2] = 3.418 b[ 3] = 0.000 a[ 3] = 2.615 b[ 4] = 0.000 a[ 4] = 1.000
В каталоге dat
будут созданы три файла:
butter_ap_test_mag.txt АЧХ фильтра butter_ap_test_phi.txt ФЧХ фильтра butter_ap_test_tau.txt ГВЗ фильтра
Кроме того программа GNUPLOT произведет построение следующих графиков по сохраненным в файлах данным:

См. определение в файле filter_freq_resp.c строка 235
Используется в phase_delay().
◆ freqs()
int freqs | ( | double * | b, |
double * | a, | ||
int | ord, | ||
double * | w, | ||
int | n, | ||
complex_t * | h | ||
) |
Расчет комплексного коэффициента передачи \( H(j \omega) \) аналогового фильтра.
Функция рассчитывает значения комплексного коэффициента передачи \( H(j \omega)\) аналогового фильтра, заданного коэффициентами передаточной функции \( H(s) \):
\[ H(s) = \frac {\sum_{k = 0}^{N} b_k s^k} {\sum_{m = 0}^{N} a_m s^m}, \]
где \( N \) - порядок фильтра (параметр ord
).
Комплексный коэффициент передачи рассчитывается путем подстановки \( s = j \omega \).
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции \( H(s) \).
Размер вектора[ord+1 x 1]
.
[in] a Указатель на вектор коэффициентов знаменателя передаточной функции \( H(s) \).
Размер вектора[ord+1 x 1]
.
[in] ord Порядок фильтра. Количество коэффициентов числителя и знаменателя передаточной функции \( H(s) \) равно ord+1
.
[in] w Указатель на вектор значений циклической частоты \( \omega \) (рад/с), для которого будет рассчитан комплексный коэффициент передачи \( H(j \omega) \).
Размер вектора[n x 1]
.
[in] n Размер вектора циклической частоты w
.
[out] h Указатель на вектор комплексного коэффициента передачи \( H(j \omega) \), рассчитанного для циклической частоты w
.
Размер вектора[n x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
Комплексный коэффициент передачи рассчитан успешно.
В противном случае код ошибки.
См. определение в файле freqs.c строка 143
Используется в filter_freq_resp().
◆ freqz()
int freqz | ( | double * | b, |
double * | a, | ||
int | ord, | ||
double * | w, | ||
int | n, | ||
complex_t * | h | ||
) |
Расчет комплексного коэффициента передачи \( H \left(e^{j \omega} \right)\) цифрового фильтра.
Функция рассчитывает значения комплексного коэффициента передачи \( H \left(e^{j \omega} \right)\) цифрового фильтра, заданного коэффициентами передаточной функции \(H(z)\):
\[ H(z) = \frac {\sum_{k = 0}^{N} b_k z^{-k}} {\sum_{m = 0}^{N} a_m z^{-m}}, \]
где \(N\) — порядок фильтра (параметр ord
).
Комплексный коэффициент передачи рассчитывается путем подстановки \(z = e^{j \omega} \).
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции \(H(z)\).
Размер вектора[ord+1 x 1]
.
[in] a Указатель на вектор коэффициентов знаменателя передаточной функции \(H(z)\).
Размер вектора[ord+1 x 1]
.
[in] ord Порядок фильтра. Количество коэффициентов числителя и знаменателя передаточной функции \(H(z)\) равно ord+1
.
[in] w Указатель на вектор значений нормированной циклической частоты \(\omega\), для которого будет рассчитан комплексный коэффициент передачи \( H \left(e^{j \omega} \right)\).
Размер вектора[n x 1]
.
[in] n Размер вектора нормированной циклической частоты w
.
[out] h Указатель на вектор комплексного коэффициента передачи \( H \left(e^{j \omega} \right)\), рассчитанного для циклической частоты w
.
Размер вектора[n x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
Комплексный коэффициент передачи рассчитан успешно.
В противном случае код ошибки.
- Заметки
- Комплексный коэффициент передачи \( H \left(e^{j \omega} \right)\) цифрового фильтра представляет собой \( 2 \pi-\)периодическую функцию нормированной циклической частоты \(\omega\). Поэтому анализ цифровых фильтров целесообразно вести на одном периоде повторения \( H \left(e^{j \omega} \right)\), т.е. в интервале \(\omega\) от 0 до \(2 \pi\), или от \(-\pi\) до \( \pi\).
Кроме того известно, что для фильтра с вещественными коэффициентами \( H \left(e^{j \omega} \right) = H^* \left(e^{-j \omega} \right)\), а значит, анализ цифрового фильтра с вещественными коэффициентами достаточно вести для нормированной частоты \(\omega\) от 0 до \(\pi\).
См. определение в файле freqz.c строка 157
Используется в filter_freq_resp().
◆ group_delay()
int DSPL_API group_delay | ( | double * | b, |
double * | a, | ||
int | ord, | ||
int | flag, | ||
double * | w, | ||
int | n, | ||
double * | tau | ||
) |
Расчет группового времени запаздывания цифрового или аналогового фильтра.
Групповое время запаздывания определяется как:
\[ \tau_g(\omega) = - \frac{d\Phi(\omega)}{d\omega}, \]
где \(\Phi(\omega)\) – ФЧХ фильтра, \(\omega\) циктическая частот в случае аналогового фильтра, или нормированная частота цифрового фильтра.
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции аналогового фильтра \( H(s) \) или цифрового фильтра \( H(z) \).
Размер вектора[ord+1 x 1]
.
[in] a Указатель на вектор коэффициентов числителя передаточной функции аналогового фильтра \( H(s) \) или цифрового фильтра \( H(z) \).
Размер вектора[ord+1 x 1]
.
Параметр может бытьNULL
. В этом случае расчет производится для цифрового КИХ-фильтра с коэффициентами, заданными векторомb
.
[in] ord Порядок фильтра. Количество коэффициентов числителя и знаменателя передаточной функции \( H(s) \) или \( H(z) \) равно ord+1
.
[in] flag Флаг который задает тип фильтра:
DSPL_FLAG_ANALOG Коэффициенты относятся к аналоговому фильтру DSPL_FLAG_DIGITAL Коэффициенты относятся к цифровому фильтру
[in] w Указатель на вектор значений циклической частоты \( \omega \) (рад/с), для которого будет рассчитаны АЧХ, ФЧХ и ГВЗ аналогового фильтра, если установлен флаг DSPL_FLAG_ANALOG
.
В случае если флагDSPL_FLAG_ANALOG
не установлен, то вектор частотыw
используется как нормированная частота комплексного коэффициента передачи \( H \left(\mathrm{e}^{j\omega} \right) \) цифрового фильтра.
В этом случае характеристика цифрового фильтра является \( 2\pi \)-периодической, и вектор частоты может содержать произвольные значения, однако целесообразно задавать его от 0 до \( \pi \), а такжет от 0 до \( 2\pi \), или от \( -\pi \) до \( \pi \).
Размер вектора[n x 1]
.
[in] n Размер вектора циклической частоты w
.
[out] tau Указатель на вектор групповой задержки.
Размер вектора[n x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
групповая задержка фильтра рассчитана успешно.
В противном случае код ошибки.
См. определение в файле group_delay.c строка 164
Используется в filter_freq_resp().
◆ phase_delay()
int DSPL_API phase_delay | ( | double * | b, |
double * | a, | ||
int | ord, | ||
int | flag, | ||
double * | w, | ||
int | n, | ||
double * | tau | ||
) |
Расчет фазовой задержки цифрового или аналогового фильтра.
Фазовая задержка определяется как:
\[ \tau_{\varphi}(\omega) = - \frac{\Phi(\omega)}{\omega}, \]
где \(\Phi(\omega)\) – ФЧХ фильтра, \(\omega\) циктическая частот в случае аналогового фильтра, или нормированная частота цифрового фильтра.
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции аналогового фильтра \( H(s) \) или цифрового фильтра \( H(z) \).
Размер вектора[ord+1 x 1]
.
[in] a Указатель на вектор коэффициентов числителя передаточной функции аналогового фильтра \( H(s) \) или цифрового фильтра \( H(z) \).
Размер вектора[ord+1 x 1]
.
Параметр может бытьNULL
. В этом случае расчет производится для цифрового КИХ-фильтра с коэффициентами, заданными векторомb
.
[in] ord Порядок фильтра. Количество коэффициентов числителя и знаменателя передаточной функции \( H(s) \) или \( H(z) \) равно ord+1
.
[in] flag Флаг который задает тип фильтра:
DSPL_FLAG_ANALOG Коэффициенты относятся к аналоговому фильтру DSPL_FLAG_DIGITAL Коэффициенты относятся к цифровому фильтру
[in] w Указатель на вектор значений циклической частоты \( \omega \) (рад/с), для которого будет рассчитаны АЧХ, ФЧХ и ГВЗ аналогового фильтра, если установлен флаг DSPL_FLAG_ANALOG
.
В случае если флагDSPL_FLAG_ANALOG
не установлен, то вектор частотыw
используется как нормированная частота комплексного коэффициента передачи \( H \left(\mathrm{e}^{j\omega} \right) \) цифрового фильтра.
В этом случае характеристика цифрового фильтра является \( 2\pi \)-периодической, и вектор частоты может содержать произвольные значения, однако целесообразно задавать его от 0 до \( \pi \), а такжет от 0 до \( 2\pi \), или от \( -\pi \) до \( \pi \).
Размер вектора[n x 1]
.
[in] n Размер вектора циклической частоты w
.
[out] tau Указатель на вектор фазовой задержки.
Размер вектора[n x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
фазовая задержка фильтра рассчитана успешно.
В противном случае код ошибки.
См. определение в файле phase_delay.c строка 165
Документация по libdspl-2.0. Последние изменения: Ср 5 Янв 2022 12:44:35. Создано системой