Я пишу приложение, которое будет анализировать данные с акселерометра. Одним из наиболее важных алгоритмов для этого является, очевидно, FFT, и после долгих поисков я обнаружил, что библиотека Exocortexs является одной из лучших для этого.Не удается получить Exocortex FFT для работы
Во всяком случае, когда я пытаюсь реализовать его, я получаю это исключение:
An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in Exocortex.DSP.v1.dll
Additional information: must be a power of 2
Вот код:
class FFT
{
public Exocortex.DSP.ComplexF[] FourierTransform(List<double> vector)
{
//Dictionary<string, List<double>>
int vectorLength = vector.Count;
Exocortex.DSP.ComplexF[] complexData = new Exocortex.DSP.ComplexF[vectorLength];
for (int i = 0; i < vectorLength; ++i)
{
complexData[i].Re = Convert.ToSingle(vector[i]); // Add your real part here
// complexData[i].Im = 2; // Add your imaginary part here
}
Exocortex.DSP.Fourier.FFT(complexData, Exocortex.DSP.FourierDirection.Forward);
return complexData;
(Это действительно просто вариант этого примера: Fast Fourier Transform in C#).
Проблема может быть такой же простой, как и мнимая часть ускорения, поскольку я предполагаю, что данные такого рода действительны, но ответ, FFT, который есть, является мнимым.
Заранее благодарен!
Большое спасибо @FredrikRedin, я чувствую себя таким глупым, но, конечно, это проблема. Исключение исчезло, и алгоритм работает так, как ожидалось! То, что я пытаюсь сделать, это найти неисправности машин, а затем FFT очень полезен, так как большинство неисправностей (дисбаланс, несущие ошибки и т. Д.) Можно найти как кратность RPM. – user2950764
FFT - отличный выбор для вашей задачи! PS: Я сделал магистерскую диссертацию именно на этом (!): Предсказал ухудшение механических передач с использованием методов обработки сигналов. Совет. Не игнорируйте боковые полосы вокруг вашей основной гармонической частоты (кратные RPM), они могут быть результатом фазовой модуляции, которую вы ожидаете возникнуть, когда время зацепления/заклинивания вращательных компонентов становится неравномерным (чтение: увеличенная дисперсия) из-за к ухудшению. PPS: FFTW - еще одна отличная библиотека FFT, используемая многими. http://www.fftw.org/ – Fredrik