2014 dxdy logo

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

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




 
 дискретное преобразование фурье
Сообщение15.03.2014, 15:59 
Здравствуйте! Помогите пожалуйста решить задачку. Пытаюсь разобраться преобразованием Фурье (дискретным). На прстой задаче столкнулся с проблемой:

- амплитуда для 2*Sin[x] должны быть примерно 2, если использовать функцию FourierTransform так и получается

ListPlot[Table[ Abs[FourierTransform[2*Sin[x], x, w]] /. DiracDelta -> DiscreteDelta, {w, 0.1, 10, 0.1}], Joined -> True, PlotRange -> All]

Изображение

Если использую функцию Fourier, то тут все совсем по-другому.

data = Table[2*Sin[x], {x, 0, 100}];
ListPlot[data, Joined -> True]

Изображение

ListPlot[Abs[Fourier[data]], Joined -> True, PlotRange -> All]

Изображение

Как я понимаю все зависит в данном случае от диапазона значений x. В таком случае как добиться результата аналогичного варианту с функцией FourierTransform? Какие результаты вообще считать верными? Как высчитать истинную амплитуду?

Вариант использовать FourierTransform просто не подходит, так как функция в перспективе будет сложной и нужно дискретное преобразование.

Спасибо заранее.

 
 
 
 Re: дискретное преобразование фурье
Сообщение15.03.2014, 16:42 
Посмотрите в справке описание FourierParameters.

 
 
 
 Re: дискретное преобразование фурье
Сообщение15.03.2014, 16:45 
Что-то я не совсем понимаю - что имеется в виду? По описанию да - параметры применяются как ограничения для перехода к FourierTransform решениям. Но а подбирать их как?

 
 
 
 Re: дискретное преобразование фурье
Сообщение15.03.2014, 17:09 
Посмотрите здесь, там пишут как находить амлитуды и фазы, и менять FourierParameters для этого не обязательно.

 
 
 
 Re: дискретное преобразование фурье
Сообщение15.03.2014, 19:17 
Спасибо большое. Есть еще вопрос - как быть с точностью? Амплитуда после преобразования где-то 2,5. В реальности же амплитуда примерно равна 2.

 
 
 
 Re: дискретное преобразование фурье
Сообщение15.03.2014, 21:23 
По ссылке все получают точно, хотя там наверное частный случай.

У вас ''сигнал'' периодический?
Если да, то можно частоту (номер бина) сразу определить точно, дальше натягивайте интерполяцию на спектр и находите
максимум. Обычно амплитуда получается с хорошей точностью, а фаза с плохой. Точность улучшается с длиной выборки.
Наверное должны быть формулы для оценки.

Если квази-периодический, то смотрите в справке Fourier->Applications как искать частоту, если у вас будет больше 2х частот -- придется делать ортогонализацию.

Также советую ознакомиться с разными окнами.

-- Сб мар 15, 2014 21:55:32 --

Забыл сказать, что есть уже готовые решения, например, из известных мне,
1) TRIP
2) SDDS ToolKit

С первым пакетом я не работал, а второй -- достаточно удобный. Во втором вам надо использовать sddsfft или sddsnaff, но там есть
еще много полезного для анализа сигналов, плюс естественная интеграция с EPICS

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


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