Skip to main content

WelchPsdResult

Namespace: RTPROCESSINGLIB  ·  Library: DSP Library

#include <dsp/welch_psd.h>

struct UTILSLIB::WelchPsdResult

Result of a Welch PSD computation.

matPsd rows correspond to channels (or the single channel passed to computeVector). Each column corresponds to a frequency bin from vecFreqs.

src/examples/ex_dsp_analysis/main.cpp
const WelchPsdResult welch = WelchPsd::compute(tones, sFreq, 250, 0.5, WelchPsd::Hann); // 1 Hz bins, 50 % overlap
// welch.matPsd: n_channels x 126 one-sided PSD (unit^2/Hz); welch.vecFreqs: 0 ... 125 Hz

Example​

Used in examples​

ex_dsp_analysis​

DSP library: Welch PSD, FIR filtering, peak finding, envelope correlation, SPHARA and simulation.

src/examples/ex_dsp_analysis/main.cpp, line 107
const WelchPsdResult welch = WelchPsd::compute(tones, sFreq, 250, 0.5, WelchPsd::Hann); // 1 Hz bins, 50 % overlap
// welch.matPsd: n_channels x 126 one-sided PSD (unit^2/Hz); welch.vecFreqs: 0 ... 125 Hz
// mne.time_frequency.psd_array_welch(x, 250, n_fft=250, n_overlap=125, window="hann")
ok &= expect(welch.vecFreqs.size() == 126 && std::fabs(welch.matPsd(0, 10) - 0.3333333333333334) < 1e-9 && std::fabs(welch.matPsd(0, 40) - 0.08333333333333323) < 1e-9 && std::fabs(welch.matPsd.sum() - 0.6250000000000001) < 1e-9,
QString("WelchPsd: P(10 Hz) = %1, P(40 Hz) = %2 match mne psd_array_welch").arg(welch.matPsd(0, 10)).arg(welch.matPsd(0, 40)));

Authors of this file​