У меня есть следующий график:
Я хотел бы отфильтровать "медленную" ошибку, чтобы осталась только высокочастотная ошибка.Я думаю, что быстрые преобразования Фурье - правильный инструмент для этого.Я думаю, что это правильный рабочий процесс:
- Выполнение БПФ
- Применение фильтров верхних / нижних частот
- Выполнение обратного БПФ
Это должно быть сделано несколько эффективно, поскольку это должно быть выполнено, когда процессор уже загружен из-за другой задачи.
Моя проблема заключается в том, что мне нужно сделать это в vb.net.Я нашел 2 библиотеки, которые могут сделать это: Alglib и это , который является портом от fftw.На fftw.net нет документации, я не могу понять.
Вот мой код с alglib:
Dim x As Double() 'x axis values
Dim fx As Double() 'y axis values
'code to read from txt file to the double array
'...
Dim f() As alglib.complex = New alglib.complex() {}
XAlglib.fftr1d(fx, f) 'note that this doesn't take x axis values, only y
'code to display everything as graph, taking only the real part of the complex struct for displaying.
'only the first half of the FFT values are displayed, as the second half is a mirrored version of the first half
...
Полученный график:
Здесь - это ссылка на документацию.
Полученный график не может быть точным, поскольку у меня не было никакого способавведите значения х.Кроме того, на оси Y оно ниже 0.
Может кто-нибудь подсказать, что мне нужно изменить, чтобы получить правильный результат, или показать мне код, который работает с использованием другой библиотеки?