В своё время потратил месяцы на вейвлеты, фурье и прочее. Говоря про одномерный случай, что в фурье, что в вейвлетах эти три оси имеют одинаковый смысл - частота, амплитуда и время. "3D" результат это просто ухищрение - возьмите высоту этого графика и "вдавите" в плоскость частота-время и получите обычную спектрограмму по времени, где вместо высоты - яркость точки.
Посчитать вейвлет можно влоб: берёте синусоиду, перемножаете её на узкое окно и получаете "всплеск" - кусок синусоиды. Либо берёте формулу всплеска из интернета. В любом случае всплеск удовлетворяет условию равенства интеграла нулю, или попросту сумма амплитуд на временном интервале = 0. Теперь осталось взять наш исходный сигнал и перемножать его на всплеск (кусочек синусоиды), смещаться на один отсчёт и опять перемножать и так на протяжении всего сигнала. После каждого умножения записывать сумму в соответствующую ячейку спектра.
Затем немного "растянуть" всплеск с коэффициентом k=... по длине и опять перемножать, шагая по одному отсчёту. Растянули в k=2 раза, значит результаты будем записывать в строчку спектрограммы с частотой в 2 раза меньше (период увеличился в 2 раза). В ваших руках какие диапазоны считать - просто находите соответствие между нужными вами частотами и крайними значениями k. В ваших руках временное разрешение - это шаг по одному сэмплу, по 2, либо по 0.00001 сэмплу (смещаете всплеск на 0.00001 сэмпл путём интерполяции).
Основное отличие от БПФ (FFT) здесь состоит в том, что для построения ВЧ части спектра нам не требуется брать огромное окно. FFT бы интегрально выдал амплитуду на отрезке, к примеру 4096 точек, а с вейвлетом мы попросту определяем похожесть данной ВЧ синусоиды на всплеск длиной в 8-16 точек в каждой из 4096 точек. Как и в случае с FFT, для определения фазы и амплитуды нужно взять комплексное вейвлет преобразование: перемножать не только на синусный всплеск, но и на косинусный, а затем брать корни из сумм квадратов и считать фазы арктангенсами.
Похожие результаты можно получить с STFT (берёте FFT от сигнала, перемноженного на очень узкое окно. Например сигнал 1024 точки на окно, где ненулевой горбик на 16-32 точки посередине сигнала), также шажками по одной точке сигнала.
Особого смысла надеяться на вейвлет не вижу - пересмотрел кучу сигналов от звуковых до хз каких, да -видны мелкие детали. НО их нужно как-то трактовать. Если там какое-то булькание и бурление - оно им и останется. Можно разве что найти похожие спектры и как-то соотнести их, сделать какие-то частные выводы. Вот если заранее известны какие-нибудь особенности сигнала - чириканье птиц и т.п., то всплесковую функцию можно заточить под определённый тип звуков, и тогда спектр может проявить быстро меняющиеся по частоте вещи. Дело всё в том, что сама функция будучи перемноженная на похожую даст максимум - ничего удивительного.
|