Требуется помощь!
Согласно ТЗ мне нужно сделать дискретное преобразование Фурье массива выборок.
С прямым, все отлично - получаем амплитудный и фазовый спектр, и непосредственно зеркальный спектр. а вот с обратным преобразованием не получается - результатом ОДПФ, согласно формуле появляются 2 массива состовляющих "Мнимые" и "реальные". Как из них получить результирующий массив(Например делая ДПФ и ОДПФ получить исходный массив)? Есть наброска на джаве:
Задаем массив signal
Прямое ДПФ
Код
private static void DFT(double[] signal, double[] phase)
{
double[] Re = new double[1024];
double[] Im = new double[1024];
for(int k = 0; k < 1024; k++)
{
for(int n = 0; n < 1024; n++){
Re[k]=Re[k]+signal[n]*Math.cos(-2*Math.PI*k*n/1024);
Im[k]=Im[k]+signal[n]*Math.sin(-2*Math.PI*k*n/1024);}
}
for(int k = 0; k < 1024; k++)
{
signal[k]=Math.sqrt(Re[k]*Re[k]+Im[k]*Im[k]);
phase[k]=Math.atan(Im[k]/Re[k]);
}
Обратное ДПФ
Код
private static void IDFT(double[] signal, double[] phase)
{
double[] Re = new double[1024];
double[] Im = new double[1024];
for(int n = 0; n < 1024; n++)
{
for(int k = 0; k < 1024; k++)
{
Re[n]=Re[n]+signal[k]*Math.cos(2*Math.PI*k*n/1024+phase[n]);
Im[n]=Im[n]+signal[k]*Math.sin(2*Math.PI*k*n/1024+phase[n]);
}
Re[n]=Re[n]/1024;
Im[n]=Im[n]/1024;
}
}
Как теперь получить исходя из этих массивов опратно массив signal выполнив подряд процедуры прямого и обратного преобразования