Перейти к содержанию
    

Найти экстремумы функции с гармонической составляющей

Добрый день.

 

Есть некий медленно меняющийся сигнал, отягощенный влиянием гармонической составляющей с переменным периодом (см картинку).

post-19987-1438089955_thumb.png

 

хочется найти все локальные экстремумы такого сигнала. Пока что делаю так. Выбираю окно размером с период гармонической составляющей и уже в нем нахожу экстремумы. Зная закон изменения периода гарм. функции, изменяю размер окна для поиска.

Есть ли более "красивый" способ решить эту задачу?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть ли более "красивый" способ решить эту задачу?

Спасибо.

В точке локального минимума (и максимума) производная непрерывной функции равна нулю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В точке локального минимума (и максимума) производная непрерывной функции равна нулю.

Конечно! Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в матлабе вот так можно

j = 0;
for k=2:length(x)-1
     if sign(x(k+1)-x(k)) != sign(x(k)-x(k-1))
          extr(j) = k;
          j = j + 1;
     end
end

математический принцип вам верно сказали, но т.к. аналитически функция неизвестная, то нужен численный метод.

Ну и это не будет работать в случае, если в сигнал добавить шум, нужно его сначала как-то фильтровать, у схемы будет более высокий порядок просто, который будет зависеть от сигнал-шума.

Изменено пользователем serjj

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хочется найти все локальные экстремумы такого сигнала. Пока что делаю так. Выбираю окно размером с период гармонической составляющей и уже в нем нахожу экстремумы. Зная закон изменения периода гарм. функции,

найдите первый, например, максимум, потом от него вправо одномерной минимизацией минимум, потом снова максимум. Идея примерно такая, делаете два мааааленьких шажка право, про длину который Вы точно будете уверены, что за экстремум не убежите, по ним считаете первую и вторую производную, и дальше бежите Ньютоном, возможно с релаксацией. Если нет дельта функций и очень не линейных зависимостей, то сойдетесь очень быстро.

 

Если у Вас функция - суть сумма двух-трех синусов и косинусов, с заранее неизвестными фазами, амплитудами и периодами, и шума нет, или почти нет, можно сделать еще элегантнее:

 

загоняете оцифрованную функцию в вектор v_1, сдвигаете этот вектор на 1 вниз, сохраняя в v_2, и так далее столько раз, сколько у Вас синусов.

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

 

Выглядит страшно, но зная лапак + мапл или математику, можно за несколько часов сделать и запрограммировать. В МК, на который лапак не компилится, реализовать будет ужасно сложно, думаю, что практически невозможно, в этом случае, остается только первый, не элегантный, метод.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала я бы избавился от низкочастотной составляющей простейшим ФВЧ :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дамы и господа,

 

виноват, не упомянул, что работаю с дискретным массивом данных. В самом начале там очень мало точек на период сигнала, т.е. прикладываться там Ньютоном не к чему. Пробовал дифференцировать данные еще до совета Татьяны, но опять-таки из-за малого кол-ва точек на период искать прохождение через 0 приходится "руками". И почему-то я думал, что есть какой-то красивый способ из области мат. физики чтоб получить все и сразу. Спасибо, что развеяли мои надежды.

 

iiv,

попробую, если будет возможность провести измерения с бОльшим разрешением.

 

serjj,

я понял, поиск по разнице в знаке. Спасибо.

 

Santik,

мне как раз и требуется получить красивую кривую этого НЧ сигнала, вычислив локальное среднее на базе амплитуды гармонического сигнала (да, именно так, всевозможные сглаживания применять нельзя).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если я правильно понял, Вас интересует зависимость fвч(t). Рекомендую непрерывный вейвлет- анализ.

Смотреть здесь.

Если НЧ нужна составляющая - то ФНЧ можно применить.

Непонятно о каких сглаживаниях Вы говорите....

Изменено пользователем Santik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне как раз и требуется получить красивую кривую этого НЧ сигнала, вычислив локальное среднее на базе амплитуды гармонического сигнала (да, именно так, всевозможные сглаживания применять нельзя).

 

А в чём проблема применять фильтрацию? Медианное сглаживание с окном большим периода гармонического сигнала + скользящее среднее или просто узкополосный ФНЧ, который отрежет гармоническую составляющую? У вас есть априорные данные о соотношении частот НЧ и ВЧ составляющих в сигнале? Если да, то не виже никаких проблем с фильтрацией, т.к. сигналы разесены по частоте. Если же априорных данных нет, то можно посмотреть в сторону BSS (blind signal separation).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть некий медленно меняющийся сигнал, отягощенный влиянием гармонической составляющей с переменным периодом (см картинку).

Что означает "переменный период"? Такого не бывает. Если Вы знаете (априорно), что мешающая Вам компонента описывается некоторой формулой с параметрами, то и нужно ее подогнать так, чтобы производная меняла знак один раз - на пике медленной составляющей функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что означает "переменный период"? Такого не бывает....

Бывает. Пример - ЛЧМ (линейная частотная модуляция)

Модель:

do i=1,NN

t=(i-1)/Fd

FXSw(i)=sin(Pi2*(F1*t-F2*t*t/(2*T0)))+10*(1-cos(Pi2*1.*t))

end do

Картинка

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бывает. Пример - ЛЧМ (линейная частотная модуляция)

Нет, не бывает... Математика - это такая конвенциональная игра. Конвенция это запрещает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запутал я всех капитально. Извините.

 

Нет, не бывает... Математика - это такая конвенциональная игра. Конвенция это запрещает.

Все намного проще, приведенные данные - спектральный отклик фотосенсора, имеющего буферный слой SiO2 на поверхности. Из-за слоя SiO2 возникает паразитная интерференция, которая зависит от длины волны.

 

Решил задачу нахрапистым способом, как советовал serjj, сохраняя индекс экстремума если есть разница в знаке между соседними точками. Только я добавил в этот цикл условие, что ширина окна между экстремумами может варьироваться линейно в зав-ти от длины волны. Задача чисто инженерная. Вот результат:

исходные данные (красная линия), среднее значение (черная линия и точка) и массив экстремумов (синие звездочки).

post-19987-1438160121_thumb.png

 

Еще раз прошу извинить что отнял ваше время. Спасибо за советы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ниччо не понял...

Фильтрация

post-71096-1438161084_thumb.jpg

Модель + Фильтр Чебышева 2 рода 6-го порядка

А если всё-таки нужно смотреть как меняется частота ВЧ составляющей - это уже надо непрерывный вейвлет-анализ :-)

Изменено пользователем Santik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ниччо не понял...

"НЧ-составляющая" на моей картинке - типичный спектральный отклик матрицы кремниевого фотосенсора. Исследуемый образец имеет довольно толстый слой SiO2 поверх Si. Границы воздух-SiO2 и SiO2-Si образует таким образом интерферометр Фабри-Перо, который в зависимости от длины волны либо усиливает либо ослабляет световой сигнал (интерференция), поглощаемый кремниевым фотодиодом.

 

А если всё-таки нужно смотреть как меняется частота ВЧ составляющей - это уже надо непрерывный вейвлет-анализ :-)

звучит серьезно, если шеф одобрит, буду изучать вейвлет-анализ :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...