Я пытаюсь реализовать оконные функции Хеннинга и Хэмминга в C #. Я нигде не могу найти образцы .Net, и я не уверен, что мои попытки конвертирования из образцов C ++ сработают хорошо.
Моя проблема в основном заключается в том, что, глядя на формулы я представляю, что им нужно иметь исходное число где-то в правой части уравнения - я просто не понимаю его, глядя на формулы. (Моя математика пока не так хороша.)
Что у меня так далеко:
public Complex[] Hamming(Complex[] iwv)
{
Complex[] owv = new Complex[iwv.Length];
double omega = 2.0 * Math.PI / (iwv.Length);
// owv[i].Re = real number (raw wave data)
// owv[i].Im = imaginary number (0 since it hasn't gone through FFT yet)
for (int i = 1; i < owv.Length; i++)
// Translated from c++ sample I found somewhere
owv[i].Re = (0.54 - 0.46 * Math.Cos(omega * (i))) * iwv[i].Re;
return owv;
}
public Complex[] Hanning(Complex[] iwv)
{
Complex[] owv = new Complex[iwv.Length];
double omega = 2.0 * Math.PI / (iwv.Length);
for (int i = 1; i < owv.Length; i++)
owv[i].Re = (0.5 + (1 - Math.Cos((2d * Math.PI ) / (i -1)))); // Uhm... wrong
return owv;
}