![]() |
libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
|
Функции | |
int | conv (double *a, int na, double *b, int nb, double *c) |
Линейная свертка двух вещественных векторов Подробнее... | |
int | conv_cmplx (complex_t *a, int na, complex_t *b, int nb, complex_t *c) |
Линейная свертка двух комплексных векторов Подробнее... | |
int | filter_iir (double *b, double *a, int ord, double *x, int n, double *y) |
Фильтрация вещественного сигнала вещественным БИХ-фильтром Подробнее... | |
Подробное описание
Функции для расчета циклической и линейной сверток, а также цифровой КИХ и БИХ фильтрации.
Функции
◆ conv()
int conv | ( | double * | a, |
int | na, | ||
double * | b, | ||
int | nb, | ||
double * | c | ||
) |
Линейная свертка двух вещественных векторов
Функция рассчитывает линейную свертку двух векторов \( c = a * b\).
- Аргументы
-
[in] a Указатель на первый вектор \(a\).
Размер вектора[na x 1]
.
[in] na Размер первого вектора.
[in] b Указатель на второй вектор \(b\).
Размер вектора[nb x 1]
.
[in] nb Размер второго вектора.
[out] c Указатель на вектор свертки \( c = a * b\).
Размер вектора[na + nb - 1 x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
если свертка расчитана успешно.
В противном случае код ошибки.
- Заметки
- Если вектора
a
иb
представляют собой коэффициенты двух полиномов, то результат линейной свертки представляет собой коэффициенты произведения исходных полиномов.
Пример использования функции:
Результат работы:
cr[0] = 3.0 cr[1] = 5.0 cr[2] = 9.0 cr[3] = 5.0 cr[4] = 14.0 cr[5] = 12.0
См. определение в файле conv.c строка 159
Используется в ratcompos().
◆ conv_cmplx()
Линейная свертка двух комплексных векторов
Функция рассчитывает линейную свертку двух векторов \( c = a * b\).
- Аргументы
-
[in] a Указатель на первый вектор \(a\).
Размер вектора[na x 1]
.
[in] na Размер первого вектора.
[in] b Указатель на второй вектор \(b\).
Размер вектора[nb x 1]
.
[in] nb Размер второго вектора.
[out] c Указатель на вектор свертки \( c = a * b\).
Размер вектора[na + nb - 1 x 1]
.
Память должна быть выделена.
- Возвращает
RES_OK
если свертка рассчитана успешно.
В противном случае код ошибки.
- Заметки
- Если векторы
a
иb
представляют собой коэффициенты двух полиномов, то результат линейной свертки представляет собой коэффициенты произведения исходных полиномов.
Пример использования функции:
Результат работы:
cc[0] = -3.0 +3.0j cc[1] = -4.0+10.0j cc[2] = -5.0+25.0j cc[3] = -6.0+32.0j cc[4] = 0.0+32.0j cc[5] = 0.0+24.0j
См. определение в файле conv_cmplx.c строка 160
◆ filter_iir()
int filter_iir | ( | double * | b, |
double * | a, | ||
int | ord, | ||
double * | x, | ||
int | n, | ||
double * | y | ||
) |
Фильтрация вещественного сигнала вещественным БИХ-фильтром
Функция рассчитывает выход фильтра заданного выражением
\[ H(z) = \frac{\sum_{n = 0}^{N} b_n z^{-n}} {1+{\frac{1}{a_0}}\sum_{m = 1}^{M} a_m z^{-m}}, \]
где \(a_0\) не может быть 0, \(N=M=\)ord
.
- Аргументы
-
[in] b Указатель на вектор коэффициентов числителя передаточной функции \(H(z)\) БИХ-фильтра.
Размер вектора[ord + 1 x 1]
.
[in] a Указатель на вектор коэффициентов знаменателя передаточной функции \(H(z)\) БИХ-фильтра.
Размер вектора[ord + 1 x 1]
.
Этот указатель может бытьNULL
, тогда фильтрация производится без использования рекурсивной части (вектор коэффициентовb
задает КИХ-фильтр).
[in] ord Порядок фильтра. Количество коэффициентов числителя и знаменателя передаточной функции \(H(z)\) БИХ-фильтра равно ord + 1
.
[in] x Указатель на вектор отсчетов входного сигнала.
Размер вектора[n x 1]
.
[in] n Длина входного сигнала.
[out] y Указатель на вектор выходных отсчетов фильтра.
Размер вектора[n x 1]
.
Память должна быть выделена заранее.
- Возвращает
RES_OK
Если фильтрация произведена успешно.
В противном случае код ошибки.
Пример использования функции filter_iir
:
На входе цифрового фильтра задан сигнал \(s(t) = \sin(2\pi \cdot 0.05 t) + n(t)\), где \(n(t)\) белый гауссовский шум, с нулевым средним и единичной дисперсией.
Фильтр представляет собой эллиптический ФНЧ 6 порядка. Входной сигнал фильтруется данным фильтром, и результат сохраняется в файлы:
dat/s.txt - исходный зашумленный сигнал dat/sf.txt - сигнал на выходе фильтра.
По полученным данным производится построение графиков:

См. определение в файле filter_iir.c строка 167
Документация по libdspl-2.0. Последние изменения: Ср 5 Янв 2022 12:44:34. Создано системой