2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 FFT
Сообщение18.08.2015, 21:29 
Добрый вечер, форумчане. Не могли бы вы помочь разобраться с частью кода ( реализацией FFT ):
Код:
/// <summary>
        /// Центровка массива значений полученных в fft (спектральная составляющая при нулевой частоте будет в центре массива)
        /// </summary>
        /// <param name="X">Массив значений полученный в fft</param>
        /// <returns></returns>
        public static Complex[] nfft(Complex[] X)
        {
            int N = X.Length;
            Complex[] X_n = new Complex[N];
            for (int i = 0; i < N / 2; i++)
            {
                X_n[i] = X[N / 2 + i];
                X_n[N / 2 + i] = X[i];
            }
            return X_n;
        }

А что будет левее центра массива ? Отрицательными частоты быть не могут...
Ссылка на вики с кодом ( часть - C# ):
https://ru.wikibooks.org/wiki/%D0%A0%D0 ... D0%B5#C.23

Еще немножко посмотрел, и мне кажется что массив будет зеркален относительно центра, прав ли я ?

 
 
 
 Re: FFT
Сообщение18.08.2015, 21:35 
MrDarkness в сообщении #1046091 писал(а):
Еще немножко посмотрел, и мне кажется что массив будет зеркален относительно центра, прав ли я ?
Да, прав, если исходные данные вещественные.

P.S. Хотя осмысленность этого действия сомнительна.

 
 
 
 Re: FFT
Сообщение18.08.2015, 21:38 
А далее ( с центра и далее ) частоты идут по возрастанию ?

 
 
 
 Posted automatically
Сообщение18.08.2015, 21:43 
Аватара пользователя
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Программирование»
Перенёс в более подходящий раздел

 
 
 
 Re: FFT
Сообщение18.08.2015, 22:03 
MrDarkness в сообщении #1046094 писал(а):
А далее ( с центра и далее ) частоты идут по возрастанию ?
Тоже да.

 
 
 
 Re: FFT
Сообщение18.08.2015, 23:28 
Аватара пользователя
MrDarkness в сообщении #1046091 писал(а):
Отрицательными частоты быть не могут...


Могут.
Но отличаться величины, симметричные относительно центра, будут, если исходный массив комплексный. Если действительный - они одинаковы (по модулю, а так комплексно сопряжённые).

 
 
 
 Re: FFT
Сообщение18.08.2015, 23:29 
Ага, виден C#. А значит, и .NET. А значит, можно посоветовать Math.NET Numerics. MrDarkness, если ваша задача не разобраться в написании алгоритма FFT на C#, используйте эту штуку сразу же, потому что над ней работали достаточно долго с соответствующим результатом в производительности и количестве возможных оставшихся ошибок. :-)

-- Ср авг 19, 2015 01:30:06 --

(Или, конечно, что-то аналогичное — просто я знаю только упомянутое.)

 
 
 
 Re: FFT
Сообщение18.08.2015, 23:36 
Аватара пользователя
MrDarkness в сообщении #1046091 писал(а):
А что будет левее центра массива ? Отрицательными частоты быть не могут...

Да запросто могу. Частоты бывают отрицательными. Да и не только отрицательными. Я то к примеру ответ знаю, что будет с лева. А Вы сами как думаете? Что будет слева?

MrDarkness в сообщении #1046091 писал(а):
Еще немножко посмотрел, и мне кажется что массив будет зеркален относительно центра, прав ли я ?

Нет, конечно. Числа ведь комплексные.

MrDarkness в сообщении #1046094 писал(а):
А далее ( с центра и далее ) частоты идут по возрастанию ?

Ну так выведите на печать и посмотрите. А ещё лучше вручную распишите каждый шаг, чтобы понимать, где частоты и как они изменяются.

 
 
 
 Re: FFT
Сообщение19.08.2015, 21:28 
В моем случае идет лишь действительная часть отличная от нуля, поэтому сопряженных не будет. Т.е. любой действительной составляющей в соответствие ставится мнимая, равная нулю. В таком случае, скорее всего, мои предположения окажутся верными.

-- 19.08.2015, 23:04 --

Pavia
Извините, не до конца освоил все теги, ранее обращался к вам, забыл написать тег ответа.

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group