2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Short Time Fourier Transform как сделать в Mathematica ?
Сообщение24.10.2014, 19:36 


15/08/14
42
Subj.

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение24.10.2014, 20:38 
Заслуженный участник


25/02/11
1786
Чего бы не по определению? Из того, что написано на вики, следует, что это преобразование Фурье от некоторой функции.

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение25.10.2014, 06:29 


15/08/14
42
Vince Diesel

Смысл STFT в анализе изменений спектра со временем. Интересует сама функция которая выделит частоты, которые наиболее часто встречаются в анализируемом потоке данных. Никто не подскажет как сделать STFT в Matematica ?

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение25.10.2014, 15:14 
Заслуженный участник


27/04/09
28128
qweras в сообщении #922786 писал(а):
Интересует сама функция которая выделит частоты, которые наиболее часто встречаются в анализируемом потоке данных.
Так это уже не STFT, а функция от него. Можно банально брать взвешенное среднее в каждый момент времени. Можно делать что-то другое, если вам нужно несколько частот.

Вам STFT нужно, обработчик или всё и сразу? Если STFT в списке, то по совету Vince Diesel присмотритесь к формуле преобразования. Функция умножается на сдвинутую оконную, а потом берётся преобразование Фурье. От выбора оконной функции зависит пригодность того, что получится, вашим целям.

Ещё есть такая вещь как мгновенная частота. Возможно, вам пригодится и она.

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение11.11.2014, 12:09 


15/08/14
42
Код:
{x} = {data[[;; , 8]]}
{y} = Fourier[{x}, FourierParameters -> {0, 1}]
Mg := Abs[y]
ListLinePlot[Mg]


Изображение

Почему-то график получается симметричный, а как сделать что-бы график был убывающией и справа после минимума опять не поднимался вверх ? И почему-то, на симметричном графике в начале и в конце максимумы похоже не помещаются на график - как исправить ?

Как на этом изображении:
http://habrastorage.org/storage3/39d/a6e/71b/39da6e71bcb260da8146236b02d5a384.png

Я хочу найти частоты с максимальной амплитудой, что-бы сделать для этих частот фильтры.

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение11.11.2014, 12:23 
Заслуженный участник


27/04/09
28128
qweras в сообщении #929637 писал(а):
Почему-то график получается симметричный
:shock: Вы про частоту Найквиста знаете?

А вкратце, возьмите первую половину массива.

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение11.11.2014, 12:49 


15/08/14
42
arseniiv в сообщении #929640 писал(а):
А вкратце, возьмите первую половину массива.


Если "не вкратце" - как правильно сделать, что-бы убывало до нуля или спектр уходил ниже ноля ? (Как на втором изображении из прошлого поста).

 Профиль  
                  
 
 Re: Short Time Fourier Transform как сделать в Mathematica ?
Сообщение11.11.2014, 12:57 
Заслуженный участник


27/04/09
28128
Ах это… Тогда вопрос будет про децибелы. Логарифмируйте! (Только правильно логарифмируйте.)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group