MCPcopy Create free account
hub / github.com/KDE/labplot / lowPassButterWorth

Method lowPassButterWorth

tests/analysis/fourier/FourierTest.cpp:94–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92}
93
94void FourierTest::lowPassButterWorth() {
95 const QString filename = QStringLiteral("butterworth.csv");
96 READ_DATA(filename);
97
98 // data
99 const auto xData = data.at(0);
100 const auto yData = data.at(1);
101 const auto filteredDataRef = data.at(2);
102
103 // data source columns
104 Column xDataColumn(QStringLiteral("x"), AbstractColumn::ColumnMode::Double);
105 xDataColumn.replaceValues(0, xData);
106
107 Column yDataColumn(QStringLiteral("y"), AbstractColumn::ColumnMode::Double);
108 yDataColumn.replaceValues(0, yData);
109
110 XYFourierFilterCurve curve(QStringLiteral("fourierFiltering"));
111 curve.setXDataColumn(&xDataColumn);
112 curve.setYDataColumn(&yDataColumn);
113
114 // prepare the filtering
115 auto filterData = curve.filterData();
116 filterData.type = nsl_filter_type_low_pass;
117 filterData.form = nsl_filter_form_butterworth;
118 filterData.autoRange = true; // use complete data range
119 filterData.cutoff = 100; // [Hz]
120 // filterData.cutoff2; // Not relevant for lowpass filter
121 filterData.order = 1;
122 filterData.unit = nsl_filter_cutoff_unit_frequency;
123 // filterData.unit2; // Not relevant for lowpass filter
124 // filterData.xRange; // Not relevant because autoRange is true
125 curve.setFilterData(filterData);
126
127 // perform the differentiation
128 curve.recalculate();
129 const XYFourierFilterCurve::FilterResult& results = curve.filterResult();
130
131 QVERIFY(results.available);
132 QVERIFY(results.valid);
133
134 // This does not work yet, because the implementation uses two side filtering,
135 // considering knowing of future values (values after the current processed index)
136 // Octave is using an IIR filter
137 // const auto xVec = *(curve.d_func()->xVector);
138 // const auto yVec = *(curve.d_func()->yVector);
139 // WRITE_RESULT_DATA(xData, yData, filteredDataRef, yVec);
140
141 // COMPARE_DOUBLE_VECTORS(xVec, xData);
142 // COMPARE_DOUBLE_VECTORS(yVec, filteredDataRef);
143}
144
145QTEST_MAIN(FourierTest)

Callers

nothing calls this directly

Calls 5

setXDataColumnMethod · 0.80
setYDataColumnMethod · 0.80
setFilterDataMethod · 0.80
replaceValuesMethod · 0.45
recalculateMethod · 0.45

Tested by

no test coverage detected