![]() |
libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
|
Функции | |
int | psd_welch (double *x, int n, int win_type, double win_param, int nfft, int noverlap, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq) |
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом Уэлча. Подробнее... | |
int | psd_welch_cmplx (complex_t *x, int n, int win_type, double win_param, int nfft, int noverlap, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq) |
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом Уэлча. Подробнее... | |
int | psd_bartlett (double *x, int n, int nfft, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq) |
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом Бартлетта. Подробнее... | |
int | psd_bartlett_cmplx (complex_t *x, int n, int nfft, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq) |
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом Бартлетта. Подробнее... | |
int | psd_periodogram (double *x, int n, int win_type, double win_param, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq) |
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом модифицированной периодограммы. Подробнее... | |
int | psd_periodogram_cmplx (complex_t *x, int n, int win_type, double win_param, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq) |
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом модифицированной периодограммы. Подробнее... | |
Подробное описание
Функции
◆ psd_bartlett()
int psd_bartlett | ( | double * | x, |
int | n, | ||
int | nfft, | ||
fft_t * | pfft, | ||
double | fs, | ||
int | flag, | ||
double * | ppsd, | ||
double * | pfrq | ||
) |
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом Бартлетта.
Функция рассчитывает спектральную плотность мощности \( X(f) \) выборки сигнала длительности $n $ отсчетов методом Бартлетта:
\[ X(f) = \frac{1}{N F_s } \sum_{p = 0}^{P-1}\left| \sum_{m = 0}^{n_{FFT}-1} x(m+p \cdot n_{\text{FFT}}) \exp \left( -j 2\pi f m \right) \right|^2, \]
где \( F_s \) – частота дискретизации (Гц), \(P = n/n_{\text{FFT}}\) – количество сегментов смещений выборки сигналов размера \(n_{FFT}\).
При использовании \(n_{FFT} = n\) оценка Бартлетта переходит в стандартную периодограмму.
Расчет спектральной плотности мощности ведется при помощи алгоритмов быстрого преобразования Фурье, для дискретной сетки частот от 0 Гц до \( F_s \) Гц (по умолчанию), или от \(-F_s /2 \) до \(F_s /2 \), если установлен флаг расчета двусторонней СПМ.
- Заметки
- Метод Бартлетта возвращает асимптотически несмещенную, состоятельную оценку СПМ (уровень флуктуаций шумовой СПМ уменьшается с ростом длины выборки
n
при фиксированнойnfft
).
- Аргументы
-
[in] x Указатель на входной вектор вещественного сигнала \(x(m)\), \( m = 0 \ldots n-1 \).
Размер вектора[n x 1]
.
[in] n Размер вектора входного сигнала. Также размер выходного вектора СПМ и вектора частоты также равны n
.
[in] nfft Размер сегмента.
Размер выходного вектора СПМ, и соответствующего ей вектора частоты.
[in] pfft Указатель на структуру fft_t.
Указатель может бытьNULL
. В этом случае объект структуры будет создан внутри функции и удален перед завершением.
Если предполагается многократный вызов функции, то рекомендуется создать объект fft_t и передавать в функцию, чтобы не создавать его каждый раз.
[in] fs частота дискретизации выборки исходного сигнала (Гц).
[in] flag Комбинация битовых флагов, задающих режим расчета: DSPL_FLAG_LOGMAG - СПМ считать в логарифмическом масштабе в единицах дБ/Гц DSPL_FLAG_PSD_TWOSIDED - двусторонняя СПМ (от -Fs/2 до Fs/2)
[in,out] ppsd Указатель на вектор СПМ рассчитанных по входному сигналу $x$.
Размер вектора[n x 1]
.
Память должна быть выделена.
[in,out] pfrq Указатель на вектор частоты, соответствующей значениям рассчитанного вектора СПМ.
Размер вектора[n x 1]
.
Указатель может бытьNULL
,в этом случае вектор частоты не рассчитывается и не возвращается.
- Возвращает
RES_OK
если расчет произведен успешно.
В противном случае код ошибки.
Пример оценок СПМ методом Бартлетта:
Программа производит расчет СПМ сигнала, состоящего из двух гармоник на фоне белого гауссова шума. Расчет ведется по выборкe длины 8192 отсчета при длине сегмента nfft
128, 1024 и 8192 отсчетов.
Рассчитанные СПМ выводятся на графики:
n = 8192, nfft = 8192
:

n = 8192, nfft = 1024
:

n = 8192, nfft = 128
:

Можно видеть, что метод Бартлетта позволяет снизить уровень флуктуация шума с увеличением количества сегментов. Однако наблюдается эффект растекания спектра, который существенно ухудшает динамический диапазон анализа.
Для более качественной оценки СПМ смотри функцию psd_welch
См. определение в файле psd_bartlett.c строка 146
◆ psd_bartlett_cmplx()
int psd_bartlett_cmplx | ( | complex_t * | x, |
int | n, | ||
int | nfft, | ||
fft_t * | pfft, | ||
double | fs, | ||
int | flag, | ||
double * | ppsd, | ||
double * | pfrq | ||
) |
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом Бартлетта.
Функция рассчитывает спектральную плотность мощности \( X(f) \) выборки сигнала длительности $n $ отсчетов методом Бартлетта:
\[ X(f) = \frac{1}{N F_s } \sum_{p = 0}^{P-1}\left| \sum_{m = 0}^{n_{FFT}-1} x(m+p \cdot n_{\text{FFT}}) \exp \left( -j 2\pi f m \right) \right|^2, \]
где \( F_s \) – частота дискретизации (Гц), \(P = n/n_{\text{FFT}}\) – количество сегментов смещений выборки сигналов размера \(n_{FFT}\).
При использовании \(n_{FFT} = n\) оценка Бартлетта переходит в стандартную периодограмму.
Расчет спектральной плотности мощности ведется при помощи алгоритмов быстрого преобразования Фурье, для дискретной сетки частот от 0 Гц до \( F_s \) Гц (по умолчанию), или от \(-F_s /2 \) до \(F_s /2 \), если установлен флаг расчета двусторонней СПМ.
- Заметки
- Метод Бартлетта возвращает асимптотически несмещенную, состоятельную оценку СПМ (уровень флуктуаций шумовой СПМ уменьшается с ростом длины выборки
n
при фиксированнойnfft
).
- Аргументы
-
[in] x Указатель на входной вектор комплексного сигнала \(x(m)\), \( m = 0 \ldots n-1 \).
Размер вектора[n x 1]
.
[in] n Размер вектора входного сигнала. Также размер выходного вектора СПМ и вектора частоты также равны n
.
[in] nfft Размер сегмента.
Размер выходного вектора СПМ, и соответствующего ей вектора частоты.
[in] pfft Указатель на структуру fft_t.
Указатель может бытьNULL
. В этом случае объект структуры будет создан внутри функции и удален перед завершением.
Если предполагается многократный вызов функции, то рекомендуется создать объект fft_t и передавать в функцию, чтобы не создавать его каждый раз.
[in] fs частота дискретизации выборки исходного сигнала (Гц).
[in] flag Комбинация битовых флагов, задающих режим расчета: DSPL_FLAG_LOGMAG - СПМ считать в логарифмическом масштабе в единицах дБ/Гц DSPL_FLAG_PSD_TWOSIDED - двусторонняя СПМ (от -Fs/2 до Fs/2)
[in,out] ppsd Указатель на вектор СПМ рассчитанных по входному сигналу $x$.
Размер вектора[n x 1]
.
Память должна быть выделена.
[in,out] pfrq Указатель на вектор частоты, соответствующей значениям рассчитанного вектора СПМ.
Размер вектора[n x 1]
.
Указатель может бытьNULL
,в этом случае вектор частоты не рассчитывается и не возвращается.
- Возвращает
RES_OK
если расчет произведен успешно.
В противном случае код ошибки.
Пример оценок СПМ методом Бартлетта:
Программа производит расчет СПМ сигнала, состоящего из двух комплексных экспонент на фоне белого гауссова шума. Расчет ведется по выборкe длины 8192 отсчета при длине сегмента nfft
128, 1024 и 8192 отсчетов.
Рассчитанные СПМ выводятся на графики:
n = 8192, nfft = 8192
:

n = 8192, nfft = 1024
:

n = 8192, nfft = 128
:

Можно видеть, что метод Бартлетта позволяет снизить уровень флуктуация шума с увеличением количества сегментов. Однако наблюдается эффект растекания спектра, который существенно ухудшает динамический диапазон анализа.
Для более качественной оценки СПМ смотри функцию psd_welch_cmplx
См. определение в файле psd_bartlett_cmplx.c строка 145
◆ psd_periodogram()
int psd_periodogram | ( | double * | x, |
int | n, | ||
int | win_type, | ||
double | win_param, | ||
fft_t * | pfft, | ||
double | fs, | ||
int | flag, | ||
double * | ppsd, | ||
double * | pfrq | ||
) |
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом модифицированной периодограммы.
Функция рассчитывает спектральную плотность мощности \( X(f) \) выборки сигнала длительности $n $ отсчетов методом модифицированной периодограммы:
\[ X(f) = \frac{1}{U F_s} \left| \sum_{m = 0}^{n-1} w(m) x(m) \exp \left( -j 2\pi f m \right) \right|^2, \]
где \( w(m) \) – отсчёты оконной функции, \( F_s \) – частота дискретизации (Гц), \( U \) нормировочный коэффициент равный
\[ U = \sum_{m = 0}^{n-1} w^2(m) \]
При использовании прямоугольного окна модифицированная периодограмма переходит в стандартную периодограмму.
Расчет спектральной плотности мощности ведется при помощи алгоритмов быстрого преобразования Фурье, для дискретной сетки частот от 0 Гц до \( F_s \) Гц (по умолчанию), или от \(-F_s /2 \) до \(F_s /2 \), если установлен флаг расчета двусторонней периодограммы.
- Заметки
- Периодограмма возвращает асимптотически несмещенную, но несостоятельную оценку СПМ (уровень флуктуаций шумовой составляющей СПМ не уменьшается с ростом длины выборки
n
).
- Аргументы
-
[in] x Указатель на входной вектор вещественного сигнала \(x(m)\), \( m = 0 \ldots n-1 \).
Размер вектора[n x 1]
.
[in] n Размер вектора входного сигнала. Также размер выходного вектора СПМ и вектора частоты также равны n
.
[in] win_type Тип оконной функции, применяемой для модифицированной периодограммы.
Подробнее смотри описание функции window.
[in] win_param Параметр оконной функции.
Данный параметр применяется только для параметрических типов окон (смотри описание функции window).
Для непараметрических функций игнорируется.
[in] pfft Указатель на структуру fft_t.
Указатель может бытьNULL
. В этом случае объект структуры будет создан внутри функции и удален перед завершением.
Если предполагается многократный вызов функции, то рекомендуется создать объект fft_t и передавать в функцию, чтобы не создавать его каждый раз.
[in] fs частота дискретизации выборки исходного сигнала (Гц).
[in] flag Комбинация битовых флагов, задающих режим расчета: DSPL_FLAG_LOGMAG - СПМ считать в логарифмическом масштабе в единицах дБ/Гц DSPL_FLAG_PSD_TWOSIDED - двусторонняя СПМ (от -Fs/2 до Fs/2)
[in,out] ppsd Указатель на вектор СПМ рассчитанных по входному сигналу $x$.
Размер вектора[n x 1]
.
Память должна быть выделена.
[in,out] pfrq Указатель на вектор частоты, соответствующей значениям рассчитанного вектора СПМ.
Размер вектора[n x 1]
.
Указатель может бытьNULL
,в этом случае вектор частоты не рассчитывается и не возвращается.
- Возвращает
RES_OK
если расчет произведен успешно.
В противном случае код ошибки.
Пример периодограммных оценок СПМ для различной длины выборки сигнала:
Программа производит расчет СПМ сигнала, состоящего из двух гармоник на фоне белого гауссова шума. Расчет ведется по выборкам длины 128, 1024 и 8192 отсчетов.
В результате периодограммы (стандартная с прямоугольным окном и модифицированная с окном Блэкмана) выводятся на графики:
n = 8192
точек (черная – классическая периодограмма с прямоугольным окном, зеленая – модифицированная с окном Блэкмана):

n = 1024
точек (черная – классическая периодограмма с прямоугольным окном, зеленая – модифицированная с окном Блэкмана):

n = 128
точек (черная – классическая периодограмма с прямоугольным окном, зеленая – модифицированная с окном Блэкмана):

Можно видеть, что модифицированная периодограмма позволяет снизить растекание СПМ, однако уровень флуктуация шума не уменьшается с увеличением размера выборки от 128 до 8192 отсчетов (оценка несостоятельная).
См. определение в файле psd_periodogram.c строка 152
◆ psd_periodogram_cmplx()
int psd_periodogram_cmplx | ( | complex_t * | x, |
int | n, | ||
int | win_type, | ||
double | win_param, | ||
fft_t * | pfft, | ||
double | fs, | ||
int | flag, | ||
double * | ppsd, | ||
double * | pfrq | ||
) |
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом модифицированной периодограммы.
Функция рассчитывает спектральную плотность мощности \( X(f) \) выборки сигнала длительности $n $ отсчетов методом модифицированной периодограммы:
\[ X(f) = \frac{1}{U F_s} \left| \sum_{m = 0}^{n-1} w(m) x(m) \exp \left( -j 2\pi f m \right) \right|^2, \]
где \( w(m) \) – отсчёты оконной функции, \( F_s \) – частота дискретизации (Гц), \( U \) нормировочный коэффициент равный
\[ U = \sum_{m = 0}^{n-1} w^2(m) \]
При использовании прямоугольного окна модифицированная периодограмма переходит в стандартную периодограмму.
Расчет спектральной плотности мощности ведется при помощи алгоритмов быстрого преобразования Фурье, для дискретной сетки частот от 0 Гц до \( F_s \) Гц (по умолчанию), или от \(-F_s /2 \) до \(F_s /2 \), если установлен флаг расчета двусторонней периодограммы.
- Заметки
- Периодограмма возвращает асимптотически несмещенную, но несостоятельную оценку СПМ (уровень флуктуаций шумовой составляющей СПМ не уменьшается с ростом длины выборки
n
).
- Аргументы
-
[in] x Указатель на входной вектор вещественного сигнала \(x(m)\), \( m = 0 \ldots n-1 \).
Размер вектора[n x 1]
.
[in] n Размер вектора входного сигнала. Также размер выходного вектора СПМ и вектора частоты также равны n
.
[in] win_type Тип оконной функции, применяемой для модифицированной периодограммы.
Подробнее смотри описание функции window.
[in] win_param Параметр оконной функциии.
Данный параметр применяется только для парамтрических типов окон (смотри описание функции window).
Для непараметрических функций игнорируется.
[in] pfft Указатель на структуру fft_t.
Указатель может бытьNULL
. В этом случае объект структуры будет создан внутри функции и удален перед завершением.
Если предполагается многократный вызов функции, то рекомендуется создать объект fft_t и передавать в функцию, чтобы не создавать его каждый раз.
[in] fs частота дискретизации выборки исходного сигнала (Гц).
[in] flag Комбинация битовых флагов, задающих режим расчета: DSPL_FLAG_LOGMAG - СПМ считать в логарифмическом масштабе в единицах дБ/Гц DSPL_FLAG_PSD_TWOSIDED - двусторонняя СПМ (от -Fs/2 до Fs/2)
[in,out] ppsd Указатель на вектор СПМ рассчитанных по входному сигналу $x$.
Размер вектора[n x 1]
.
Память должна быть выделена.
[in,out] pfrq Указатель на вектор частоты, соответствующей значениям рассчитанного вектора СПМ.
Размер вектора[n x 1]
.
Указатель может бытьNULL
,в этом случае вектор частоты не рассчитывается и не возвращается.
- Возвращает
RES_OK
если расчет произведен успешно.
В противном случае код ошибки.
Пример периодограммных оценок СПМ для различной длины выборки сигнала:
Программа производит расчет СПМ сигнала, состоящего из двух гармоник на фоне белого гауссова шума. Расчет ведется по выборкам длины 128, 1024 и 8192 отсчетов.
В результате периодограммы (стандартная с прямоугольным окном и модифицированная с окном Блэкмана) выводятся на графики:
n = 8192
точек (черная – классическая периодограмма с прямоугольным окном, зеленая – модифицированная с окном Блэкмана):

n = 1024
точек (черная – классическая периодограмма с прямоугольным окном, зеленая – модифицированная с окном Блэкмана):

n = 128
точек (черная – классическая периодограмма с прямоугольным окном, зеленая – модифицированная с окном Блэкмана):

Можно видеть, что модифицированная периодограмма позволяет снизить растекание СПМ, однако уровень флуктуация шума не уменьшается с увеличением размера выборки от 128 до 8192 отсчетов (оценка несостоятельная).
См. определение в файле psd_periodogram_cmplx.c строка 151
◆ psd_welch()
int psd_welch | ( | double * | x, |
int | n, | ||
int | win_type, | ||
double | win_param, | ||
int | nfft, | ||
int | noverlap, | ||
fft_t * | pfft, | ||
double | fs, | ||
int | flag, | ||
double * | ppsd, | ||
double * | pfrq | ||
) |
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом Уэлча.
int psd_welch(double* x, int n, int win_type, double win_param, int nfft, int noverlap, fft_t* pfft, double fs, int flag, double* ppsd, double* pfrq)
Функция рассчитывает спектральную плотность мощности \( X(f) \) выборки сигнала длительности $n $ отсчетов методом Уэлча:
\[ X(f) = \frac{1}{U P F_s } \sum_{p = 0}^{P-1}\left| \sum_{m = 0}^{n_{FFT}-1} w(m) x(m+p \cdot n_{\text{overlap}}) \exp \left( -j 2\pi f m \right) \right|^2, \]
где \( w(m) \) – отсчёты оконной функции, \( F_s \) – частота дискретизации (Гц), \(P = n/n_{\text{overlap}}\) – количество сегментов смещений выборки сигналов размера \(n_{FFT}\),
\( U \) нормировочный коэффициент равный
\[ U = \sum_{m = 0}^{n-1} w^2(m), \]
Процедура разбиения исходной последовательности длительности n
отсчетов на сегменты длины \(n_{FFT}\) отсчетов, перекрывающихся с интервалом \(n_{\text{overlap}}\) отсчетов, показан на следующем рисунке

Расчет спектральной плотности мощности ведется при помощи алгоритмов быстрого преобразования Фурье, для дискретной сетки частот от 0 Гц до \( F_s \) Гц (по умолчанию), или от \(-F_s /2 \) до \(F_s /2 \), если установлен флаг расчета двусторонней периодограммы.
- Заметки
- Периодограмма Уэлча возвращает смещенную, но состоятельную оценку СПМ.
- Аргументы
-
[in] x Указатель на входной вектор комплексного сигнала \(x(m)\), \( m = 0 \ldots n-1 \).
Размер вектора[n x 1]
.
[in] n Размер вектора входного сигнала. Также размер выходного вектора СПМ и вектора частоты также равны n
.
[in] win_type Тип оконной функции, применяемой для модифицированной периодограммы.
Подробнее смотри описание функции window.
[in] win_param Параметр оконной функциии.
Данный параметр применяется только для парамтрических типов окон (смотри описание функции window).
Для непараметрических функций игнорируется.
[in] nfft Размер перекрывающегося сегмента.
Размер выходного вектора СПМ, и соответсвующего ей вектора частоты.
[in] noverlap Размер сдвига сегментов относительно друг друга (отсчетов).
noverlap = nfft
задает оценку без перекрытия сегментов.
Обычно используют сдвиг равный половине размера сегментаnoverlap = nfft/2
.
[in] pfft Указатель на структуру fft_t.
Указатель может бытьNULL
. В этом случае объект структуры будет создан внутри функции и удален перед завершением.
Если предполагается многократный вызов функции, то рекомендуется создать объект fft_t и передавать в функцию, чтобы не создавать его каждый раз.
[in] fs частота дискретизации выборки исходного сигнала (Гц).
[in] flag Комбинация битовых флагов, задающих режим расчета: DSPL_FLAG_LOGMAG - СПМ считать в логарифмическом масштабе в единицах дБ/Гц DSPL_FLAG_PSD_TWOSIDED - двусторонняя СПМ (от -Fs/2 до Fs/2)
[in,out] ppsd Указатель на вектор СПМ рассчитанных по входному сигналу $x$.
Размер вектора[nfft x 1]
.
Память должна быть выделена.
[in,out] pfrq Указатель на вектор частоты, соответствующей значениям рассчитанного вектора СПМ.
Размер вектора[nfft x 1]
.
Указатель может бытьNULL
,в этом случае вектор частоты не рассчитывается и не возвращается.
- Возвращает
RES_OK
если расчет произведен успешно.
В противном случае код ошибки.
Пример периодограммных оценок СПМ для различной длины выборки сигнала:
Программа производит расчет СПМ сигнала, состоящего из двух комплексных гармоник на фоне белого гауссова шума. Расчет ведется по выборке сигнала длины 8192 отсчета.
Рассчитанные СПМ выводятся на графики:
nfft = 8192, noverlap = 4096
:

nfft = 1024, noverlap = 512
:

nfft = 256, noverlap = 128
:

Можно видеть, что уменьшение nfft
при фиксированной длительности сигнала позволяет уменьшить флуктуации шума и делает оценку состоятельной.
См. определение в файле psd_welch.c строка 160
◆ psd_welch_cmplx()
int psd_welch_cmplx | ( | complex_t * | x, |
int | n, | ||
int | win_type, | ||
double | win_param, | ||
int | nfft, | ||
int | noverlap, | ||
fft_t * | pfft, | ||
double | fs, | ||
int | flag, | ||
double * | ppsd, | ||
double * | pfrq | ||
) |
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом Уэлча.
int psd_welch_cmplx(complex_t* x, int n, int win_type, double win_param, int nfft, int noverlap, fft_t* pfft, double fs, int flag, double* ppsd, double* pfrq)
Функция рассчитывает спектральную плотность мощности \( X(f) \) выборки сигнала длительности $n $ отсчетов методом Уэлча:
\[ X(f) = \frac{1}{U P F_s } \sum_{p = 0}^{P-1}\left| \sum_{m = 0}^{n_{FFT}-1} w(m) x(m+p \cdot n_{\text{overlap}}) \exp \left( -j 2\pi f m \right) \right|^2, \]
где \( w(m) \) – отсчёты оконной функции, \( F_s \) – частота дискретизации (Гц), \(P = n/n_{\text{overlap}}\) – количество сегментов смещений выборки сигналов размера \(n_{FFT}\),
\( U \) нормировочный коэффициент равный
\[ U = \sum_{m = 0}^{n-1} w^2(m), \]
Процедура разбиения исходной последовательности длительности n
отсчетов на сегменты длины \(n_{FFT}\) отсчетов, перекрывающихся с интервалом \(n_{\text{overlap}}\) отсчетов, показан на следующем рисунке

Расчет спектральной плотности мощности ведется при помощи алгоритмов быстрого преобразования Фурье, для дискретной сетки частот от 0 Гц до \( F_s \) Гц (по умолчанию), или от \(-F_s /2 \) до \(F_s /2 \), если установлен флаг расчета двусторонней периодограммы.
- Заметки
- Периодограмма Уэлча возвращает смещенную, но состоятельную оценку СПМ.
- Аргументы
-
[in] x Указатель на входной вектор комплексного сигнала \(x(m)\), \( m = 0 \ldots n-1 \).
Размер вектора[n x 1]
.
[in] n Размер вектора входного сигнала. Также размер выходного вектора СПМ и вектора частоты также равны n
.
[in] win_type Тип оконной функции, применяемой для модифицированной периодограммы.
Подробнее смотри описание функции window.
[in] win_param Параметр оконной функциии.
Данный параметр применяется только для парамтрических типов окон (смотри описание функции window).
Для непараметрических функций игнорируется.
[in] nfft Размер перекрывающегося сегмента.
Размер выходного вектора СПМ, и соответсвующего ей вектора частоты.
[in] noverlap Размер сдвига сегментов относительно друг друга (отсчетов).
noverlap = nfft
задает оценку без перекрытия сегментов.
Обычно используют сдвиг равный половине размера сегментаnoverlap = nfft/2
.
[in] pfft Указатель на структуру fft_t.
Указатель может бытьNULL
. В этом случае объект структуры будет создан внутри функции и удален перед завершением.
Если предполагается многократный вызов функции, то рекомендуется создать объект fft_t и передавать в функцию, чтобы не создавать его каждый раз.
[in] fs частота дискретизации выборки исходного сигнала (Гц).
[in] flag Комбинация битовых флагов, задающих режим расчета: DSPL_FLAG_LOGMAG - СПМ считать в логарифмическом масштабе в единицах дБ/Гц DSPL_FLAG_PSD_TWOSIDED - двусторонняя СПМ (от -Fs/2 до Fs/2)
[in,out] ppsd Указатель на вектор СПМ рассчитанных по входному сигналу $x$.
Размер вектора[nfft x 1]
.
Память должна быть выделена.
[in,out] pfrq Указатель на вектор частоты, соответствующей значениям рассчитанного вектора СПМ.
Размер вектора[nfft x 1]
.
Указатель может бытьNULL
,в этом случае вектор частоты не рассчитывается и не возвращается.
- Возвращает
RES_OK
если расчет произведен успешно.
В противном случае код ошибки.
Пример периодограммных оценок СПМ для различной длины выборки сигнала:
Программа производит расчет СПМ сигнала, состоящего из двух комплексных гармоник на фоне белого гауссова шума. Расчет ведется по выборке сигнала длины 8192 отсчета.
Рассчитанные СПМ выводятся на графики:
nfft = 8192, noverlap = 4096
:

nfft = 1024, noverlap = 512
:

nfft = 256, noverlap = 128
:

Можно видеть, что уменьшение nfft
при фиксированной длительности сигнала позволяет уменьшить флуктуации шума и делает оценку состоятельной.
См. определение в файле psd_welch_cmplx.c строка 159
Документация по libdspl-2.0. Последние изменения: Ср 5 Янв 2022 12:44:34. Создано системой