![]() |
|
![]() ![]() ![]() |
|
Alexei |
|
|||
Unregistered |
Привет!
У меня следующая проблема: Имеется некоторый однотональный сигнал сложной формы (частота+гармоники),как узнать их частоты и амплитуды? FFT,сами знаете что выдает.Оконные функции помогают мало.Про вейвлет читал, ни черта не понял, но помоему и там надо знать частоту сигнала. Далеко не математик, поэтому просьба не пугать умными терминами,по возможности. |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Как задан этот сигнал? Только отсчетами во времени? Можешь картинку показать или хотя бы схематично изобразить?
|
|||
|
||||
Alexei |
|
|||
Unregistered |
Я упражняюсь просто с суммой 3-5 синус. частот с разными ампл и фазами.А в реальном будет шум и 50,100 гц, какже без них.
|
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Тогда дай какой-нибудь пример, покажу, как на вейвлетах делается.
|
|||
|
||||
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
Придумай сам что-нить, я тебе доверяю...:-)
Главное, чтобы принцип был понятен. |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Возьмем такую вот не очень страшную сумму синусоид: x(t) = 5*sin(5t)+3*sin(2t)+2*sin(t).
И давайте прикинемся, что нам пока неизвестны количество гармоник и их частоты. Для того чтобы воспользоваться вейвлет-преобразованием, нам нужны некоторые предварительные сведения, как минимум понятие о том, что такое масштаб. Здесь об этом расписывать слишком накладно. Самый лучший краткий ликбез по вейвлетам можно найти на сайте www.autex.spb.ru в разделе "Литература". А вообще масштаб – это величина, обратно пропорциональная частоте (с точностью до некоторой величины, подробности – в ликбезе ![]() Имеется простая формула, связывающая частоты, соответствующие масштабным коэффициентам, с центральной частотой материнского вейвлета (базиса вейвлет-преобразования): Fa = Fc/(a*delta), где a – масштабный коэффициент, Fc – центральная частота материнского вейвлета в Гц, delta – период дискретизации, Fa – псевдочастота, соответствующая масштабу а, в Гц. Пару слов об Fc. Это доминирующая частота материнского вейвлета. Из рисунка понятно, как она определяется. Здесь показан вейвлет Добеши 7-го порядка (синим цветом) и аппроксимация синусоиды на основе его центральной частоты. Мы для решения задачи возьмем вейвлет Морлета. Он выглядит так: Имеем 500 отсчетов нашей «гремучей смеси». Применим технику непрерывного вейвлет-анализа в диапазоне масшатбных коэффициентов от 1 до 60 (с шагом 1 - строго говворя - дискретизированный вариант непрерывного преобразования). Результат в виде амплитуд полученных вейвлет-коэффициентов – на рисунке. Ниже - вид на тот же результат как бы «сверху». Здесь более светлые участки соответствуют «вершинам» поверхности. Чем светлее, тем больше амплитуда вейвлет-коэффициентов. На рисунке хорошо видно, что максимумы этих «горбов» примерно соответствуют значениям масштабных коэффициентов 8, 20 и 40, что соответствует (см. формулу выше) значениям псевдочастот 0.792, 0.317 и 0.158 Гц (или 5, 2 и 1 рад/с). Это чуть-чуть отличается от истинных значений (подписаны сверху графика), т.к. на этом графике выведены только целочисленные значения масштабных коэффициентов. Если аккуратно посмотреть дробные значения, то и результат будет точнее. |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Если есть вопросы - пожалуйста. А мне хотелось бы знать, что с БПФ не так.
|
|||
|
||||
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
Красиво!
FFT не нравиться потому, что он показывает только "свои" частоты, кратные интервалу FFT. При этом получить приемлимое значение частоты еще можно, увеличив сам интервал , а как быть с амплитудой? Если интервал 10мс , а сигнал 110гц , то 5 гармоника разделится пополам, а 10 прикинется 11. Непонятно , где искать настоящее значение на оси частот, слева или справа от ффтшной. А в вейвлете можно плавно менять масштаб? |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Да, в непрерывном вейвлет-анализе можно плавно менять масштаб. При этом базисная вейвлет-функция будет стягиваться-растягиваться, как гармошка. В дискретном вейвлет-анализе масштабный коэффициент может принимать только дискретные значения, обычно кратные степени двойки.
Если у тебя такие заморочки с поиском настоящего значения частоты, то можно использовать такой прием. Т.к. часто бывает невозможно получить более точное значение частоты просто из-за невозможности увеличить частоту дискретной сетки, берут максимум, найденный по имеющейся сетке дискретных данных (максимальное значение в спектре), а затем аппроксимируют интервал слева и справа от этого максимума с помощью сплайна. Точность аппроксимации можно выбрать, какую нужно для решения задачи. Это будет влиять только на количество значений сплайна, которые надо посчитать. После этого уточняют положения максимума уже по аппроксимированным данным. На сегодняшний день более эффективной методики уточнения я не знаю. |
|||
|
||||
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
сам этот максимум не учитывают? |
|||
|
||||
beif |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 25.8.2003 Где: Россия, Кемерово Репутация: 1 Всего: 1 |
Очень интересно. Не знал, что вейвлеты настолько хороши... Кстати, podval, а что это за редактор, из которого у тебя графики?
|
|||
|
||||
podval |
|
||||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Учитывают не только этот максимум, но и несколько значений вокруг него. Их количество зависит от типа сплайна. Если интересно, я выложу пример в отдельном топике, когда разберусь с делами. |
||||
|
|||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Это не редактор, это система MATLAB 6.5 (http://www.mathworks.com, http://www.matlab.ru) |
|||
|
||||
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
А нет ли чего- нить кроме FFT, я вот тут нашел, не объяснишь как это?
http://www.dsp-sut.spb.ru/edsw/edsw_det.html Вычисление основного тона Для расчета основного тона (ОТ) используется автокорреляционный метод. Периоды ОТ показываются на сигнале с помощью меток. Непосредственно под графиком сигнала можно вывести график изменения ОТ. Если я правильно понял, в вейвлете можно достаточно произвольно выбрать входной интервал, а это повлеяет на масштаб, или нет? |
|||
|
||||
podval |
|
|||
![]() Где я? Кто я? ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3094 Регистрация: 25.3.2002 Где: СПб Репутация: 18 Всего: 62 |
Это, конечно, применительно к речевому сигналу. С речью вообще сложно работать, и там автокорреляционный метод в чистом виде работает плоховато. Как это выглядит на практике, можно посмотреть, например, здесь. Еще о методах определения основного тона здесь. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |