реклама на сайте
подробности

 
 
> обратное преобразование Фурье, почему так получается?
Д.К.
сообщение Oct 5 2012, 08:29
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 23-08-12
Пользователь №: 73 232



Нашёл в сети исходник преобразования Фурье.
Функция производит БПФ. Функция принимает на вход следующие аргументы:

реальный массив, мнимый массив, длину преобразования и флаг, который если принимает "1" - производится ОБПФ, если "0" - прямое БПФ.

Так вот, делаю прямое БПФ, вместо мнимой части подаю нули. Затем разделяю получившийся результат на четыре массива (как если бы делал БПФ двух вещественных сигналов за один проход комплексного) - получаю две реальные и две мнимые части спектра двух вещественных сигналов.
Далее, произвожу ОБПФ той же функцией, выставив флаг ОБПФ. На вход подаю действительные и мнимые массивы первого спектра.
На графиках ниже:

сверху: исходный сигнал
внизу: ОБПФ реальной части спектра этого сигнала.

Почему получается как бы зеркальный сигнал?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Д.К.
сообщение Oct 5 2012, 10:32
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 23-08-12
Пользователь №: 73 232



а я сделал костыль

for (i=0; i<N; i++)
{
invres[i] = re1[N-i];
}

по сути переставил местами выборку и всё стало красиво
Go to the top of the page
 
+Quote Post
diwil
сообщение Oct 5 2012, 12:04
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Д.К. @ Oct 5 2012, 14:32) *
а я сделал костыль

for (i=0; i<N; i++)
{
invres[i] = re1[N-i];
}

по сути переставил местами выборку и всё стало красиво


цикл до N/2 !
Go to the top of the page
 
+Quote Post
Xenia
сообщение Oct 5 2012, 12:46
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(diwil @ Oct 5 2012, 16:04) *
цикл до N/2 !


Не имеет значения, ДО какого числа вы цикл крутите, если у вас "зашкал" на первом же обороте цикла! Крутите его хоть до единицы, результат будет столь же плачевный.
Входим в цикл, подставляем "i=0" в "invres[i] = re1[N-i]" :
получаем:
invres[0] = re1[N];
А где, спрашивается, re1[N], если в массиве последний элемент за номером N-1?
Ферштейн?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 13:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016