Вопрос математикам

User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Вопрос математикам

Post by Privet »

Извините, повесил глобально. Ну очень надо.

Есть функция типа "колокольчик" сильно искажённая шумом. Это дискреты спектра мощности сигнала. Надо определить самым точным образом (с точностью выше шага дискрет) определить центр этого "колокольчика". Какой математический аппарат может это сделать.

Например, имеем дискреты (их много это только место "колокольчика" с максимальным выбросом):
...
частота 32, мощность 94
частота 36, мощность 75
частота 40, мощность 132
частота 44, мощность 211
частота 48, мощность 203
частота 52, мощность 114
частота 56, мощность 64
частота 60, мощность 54
...

Надо определить частоту излучателя.
Привет.
User avatar
VladDod
Уже с Приветом
Posts: 56113
Joined: 06 May 2001 09:01

Re: Вопрос математикам

Post by VladDod »

Пару раз профильтровать. Чемнить типа "running median" с различной шириной "окна". https://ru.wikipedia.org/wiki/%D0%A1%D0 ... 1%8F%D1%8F

Из полученного найти точки минимума (максимума)
в реале супруги редко бывают друзьями, так как их отношения подпорчены сексом (с)Роза
Плавали-Знаем! (C)
User avatar
apex
Уже с Приветом
Posts: 2234
Joined: 24 May 2008 13:28
Location: Chicago

Re: Вопрос математикам

Post by apex »

Curve fitting in Excel using its Solver.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Вопрос математикам

Post by Palych »

Я не математик, но в принципе по искаженным данным нельзя получить точное число.
Поэтому разные методы будут ошибаться по-разному.
А стало быть не так уж важно какой выбрать. Возможно тут логика хромает у меня...
Самое простое: максимум средневзвешенного значения.
Можно ещё отрезать значения ниже порога и найти середину получившейся фигуры с точки зрения площади: чтобы слева и справа от выбранного значения произведение значений на количество измерений было одинаково. Это если измерения через равные промежутки времени делались... Как это сделать я не знаю навскидку, бо не математик.
User avatar
apex
Уже с Приветом
Posts: 2234
Joined: 24 May 2008 13:28
Location: Chicago

Re: Вопрос математикам

Post by apex »

The normal distribution does not fit that well.
You do not have the required permissions to view the files attached to this post.
User avatar
apex
Уже с Приветом
Posts: 2234
Joined: 24 May 2008 13:28
Location: Chicago

Re: Вопрос математикам

Post by apex »

Короче, нужно форму функции "колокольчика" разумно задать. И чем больше измерений, тем лучше, ну хотябы 10 серий.
DropAndDrag
Уже с Приветом
Posts: 6018
Joined: 11 Mar 2011 05:36

Re: Вопрос математикам

Post by DropAndDrag »

по простому и по правильному нужно взять 3 самых высоких точки, написать квадратное уравнение и найти максимум.
peak detector in LabVIEW использует этот принцип и насчитал 218.243 и нахождение (32 + 4 * 3.408).
в экселе такое должно быть по идеи.
можно притащить за уши и 4-ую, и даже 5-ую точки, то бишь апроксимировать 3х степенным или 4-х степенным полиномом, но тогда однозначного решения обычно нет, а играться с ошибками - бог его знает

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

апроксимировать нормальным распределением - это полный бред. если бы находить какие-нибудь критерии достоверности события, то тогда можно загнать в нормальное распределение, а потом утверждать, что при сигма = 1 или 2 или 3, вероятность, того что точка принадлежит событию бла-бла-бла ...

все ИМХО, так математику уже давно забыл и остались ощущения ...
DropAndDrag
Уже с Приветом
Posts: 6018
Joined: 11 Mar 2011 05:36

Re: Вопрос математикам

Post by DropAndDrag »

apex wrote: 26 Dec 2020 19:19 Короче, нужно форму функции "колокольчика" разумно задать. И чем больше измерений, тем лучше, ну хотябы 10 серий.
больше измерений это подавление помех по формуле SQRT(N), где N - это кол-во измерений
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

Влад, всё было бы просто, если бы мы имели возможность наблюдать сигнал длительное время для накопления его энергии, чтобы выделить его из шума. В приложении к этому неплохо было бы иметь неограниченные вычислительные ресурсы. Тогда любой учебник в зубы и задача становится не сложнее студентческого практического задания. Увы, мы обложены ограничениями со всех сторон. Сделать шаг сетки БПФ мельче не получается. Не проходим по быстродействию. И прочее и прочее.
Обсуждать общие проблемы обнаружения сигналов на фоне шумов не хотелось бы. Речь идёт о конкретной узкой вычислительной задаче.

Почти все проблемы у нас уже решены. Алгоритм, скажем так, уточнения частоты в "колокольчике" тоже есть. Даже несколько. Один из них - самый очевидный корреляционный метод, но он довольно затратный. Работают оба, но хочется большего.

Я не математик. Эта задача довольна популярна на практике и, возможно, есть другие подходы к её решению. Именно о них и хотелось бы узнать. Или какие-то идеи.
Привет.
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

apex wrote: 26 Dec 2020 18:01 Curve fitting in Excel using its Solver.
Ну, Excel в наш ARM M3 40 мГц без FPP мы засунуть, возможно сможем. Ещё мой друг и сосед Билл именно этим и занимался. Надеюсь, не откажет в помощи, если ещё что-то помнит. :)
Боюсь по быстродействию только не прокатит :), но за ключевые слова большое спасибо!
Привет.
User avatar
apex
Уже с Приветом
Posts: 2234
Joined: 24 May 2008 13:28
Location: Chicago

Re: Вопрос математикам

Post by apex »

DropAndDrag wrote: 26 Dec 2020 19:39
apex wrote: 26 Dec 2020 19:19 Короче, нужно форму функции "колокольчика" разумно задать. И чем больше измерений, тем лучше, ну хотябы 10 серий.
больше измерений это подавление помех по формуле SQRT(N), где N - это кол-во измерений
Да, хотел сказать то же самое, но поленился.
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

Palych wrote: 26 Dec 2020 18:06 Я не математик, но в принципе по искаженным данным нельзя получить точное число.
Поэтому разные методы будут ошибаться по-разному.
А стало быть не так уж важно какой выбрать. Возможно тут логика хромает у меня...
Самое простое: максимум средневзвешенного значения.
Можно ещё отрезать значения ниже порога и найти середину получившейся фигуры с точки зрения площади: чтобы слева и справа от выбранного значения произведение значений на количество измерений было одинаково. Это если измерения через равные промежутки времени делались... Как это сделать я не знаю навскидку, бо не математик.
Конечно, они будут ошибаться, но вопрос ещё и потребляемых ресурсов. Первый метод, который я реализовал был именно выбор средневзвешенного значения. Он прост и неплохо работает. По площадям тоже интересная идея. Спасибо! Подумаем.
Привет.
DropAndDrag
Уже с Приветом
Posts: 6018
Joined: 11 Mar 2011 05:36

Re: Вопрос математикам

Post by DropAndDrag »

если это излучение от антенны, то должны быть уменьшающиеся по амплитуде пики на нечетных кратных частотах 3х, 5х (хоть убей не помню почему на четных кратностях пиков не может быть, а ведь учили же).
можно находить эти пики и хотя бы оценивать максимальную ошибку
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

apex wrote: 26 Dec 2020 19:19 Короче, нужно форму функции "колокольчика" разумно задать. И чем больше измерений, тем лучше, ну хотябы 10 серий.
Насколько я понимаю, там корреряционный метод. Здорово то, что им можно проверять наши алгоритмы. Выкинуть данные в файл и загнать их в Excell. Спасибо за наводку.
Привет.
Mosp18
Новичок
Posts: 81
Joined: 30 Sep 2018 00:02

Re: Вопрос математикам

Post by Mosp18 »

В свое время я решал похожую задачу методом spline approximation, даже выдал из себя програмку на паскале.
что-то вроде этого:
https://habr.com/ru/post/314218/
Это, возомжно, overkill, т.к. метод позволяет провести гладкую кривую когда предполагается _произвольное_ количество экстремумов. Там есть параметр, который задает "гладкость" полученого сплайна, т.е. при большой гладкости количество экстремумов будет минимально, чем меньше гладкость, тем на меньшие выбросы точек она будет реагировать. Это работает для анализа сильно зашумлённых спектров, когда экспериментатор примерно понимает, сколько экстремумов должно быть.
Кстати, если пришлете файл с точками я могу попробовать его прогнать в этой программе.
Хотя сейчас я думаю есть уже готовые програмы в matlab или бесплатной octave
Last edited by Mosp18 on 26 Dec 2020 20:06, edited 1 time in total.
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

DropAndDrag wrote: 26 Dec 2020 19:37 по простому и по правильному нужно взять 3 самых высоких точки, написать квадратное уравнение и найти максимум.
peak detector in LabVIEW использует этот принцип и насчитал 218.243 и нахождение (32 + 4 * 3.408).
в экселе такое должно быть по идеи.
можно притащить за уши и 4-ую, и даже 5-ую точки, то бишь апроксимировать 3х степенным или 4-х степенным полиномом, но тогда однозначного решения обычно нет, а играться с ошибками - бог его знает

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

апроксимировать нормальным распределением - это полный бред. если бы находить какие-нибудь критерии достоверности события, то тогда можно загнать в нормальное распределение, а потом утверждать, что при сигма = 1 или 2 или 3, вероятность, того что точка принадлежит событию бла-бла-бла ...

все ИМХО, так математику уже давно забыл и остались ощущения ...
С памятью у Вас явно проблем нет, в отличие от меня. :)
С фильтрами действительно работать с несолькими точками проблематично, однако, в некоторой части мы используем выравнивание через сумму соседних отсчётов с коэффициентами. Решение примитивное, но оно неплохо в некоторых случаях подавляет шумы.
Привет.
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

Я чуть позднее уберу глобальную видимость топика. Извиняюсь, но должен же я иметь хоть какой-то бенефит от содержания форума :). Обещаю не наглеть.
Оригинально он в viewforum.php?f=46
Привет.
DropAndDrag
Уже с Приветом
Posts: 6018
Joined: 11 Mar 2011 05:36

Re: Вопрос математикам

Post by DropAndDrag »

Privet wrote: 26 Dec 2020 20:05
DropAndDrag wrote: 26 Dec 2020 19:37 по простому и по правильному нужно взять 3 самых высоких точки, написать квадратное уравнение и найти максимум.
peak detector in LabVIEW использует этот принцип и насчитал 218.243 и нахождение (32 + 4 * 3.408).
в экселе такое должно быть по идеи.
можно притащить за уши и 4-ую, и даже 5-ую точки, то бишь апроксимировать 3х степенным или 4-х степенным полиномом, но тогда однозначного решения обычно нет, а играться с ошибками - бог его знает

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

апроксимировать нормальным распределением - это полный бред. если бы находить какие-нибудь критерии достоверности события, то тогда можно загнать в нормальное распределение, а потом утверждать, что при сигма = 1 или 2 или 3, вероятность, того что точка принадлежит событию бла-бла-бла ...

все ИМХО, так математику уже давно забыл и остались ощущения ...
С памятью у Вас явно проблем нет, в отличие от меня. :)
С фильтрами действительно работать с несолькими точками проблематично, всё равно в некоторой части мы используем выравнивание через сумму соседних отсчётом с коэффициентами, конечно. Решение примитивное, но оно неплохо в некоторых случаях подавляет шумы.
да, Вы правы. если утрировать, то меньше точек находят лучше амплитуду, а больше точек частоту.
проблема в том, что в пике всего 4 точки, так как левый край загнут вверх относительно правого и минимальная левая точка выше правого края. поэтому можно предположить, что слева что-то влияет на вторую точку, и возможно на третью точку. также это максимальный пик.
вот если бы в пике было был 20-30 точек, то тогда да можно было бы поусреднять, или еще используют вариант - частота на полувысоте пика, но нужен хорошо выраженный пик.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Вопрос математикам

Post by Palych »

Предлагаю тупое, не математическое решение:
Найти пиковые точки, где предыдущее и последующее значения меньше.
И выбрать ту, что ближе к центру диапазона. Или ту что выше.

Если значений совсем мало - средневзвешивать не получится в принципе.
User avatar
ReactoR
Уже с Приветом
Posts: 11215
Joined: 25 Mar 2004 02:31
Location: 🌫⛆☔♕☔⛆🌫

Re: Вопрос математикам

Post by ReactoR »

Фурье преобразование, если сигнал наложение гармоник?
Last edited by ReactoR on 26 Dec 2020 20:44, edited 1 time in total.
Мир это Выхухоль.
DropAndDrag
Уже с Приветом
Posts: 6018
Joined: 11 Mar 2011 05:36

Re: Вопрос математикам

Post by DropAndDrag »

это много где применятся. например, вот тут https://bmcbioinformatics.biomedcentral ... -2105-10-4 неплохо описано для масс-спектрометров.
User avatar
Privet
Администратор
Posts: 17199
Joined: 03 Jan 1999 10:01
Location: Redmond, WA

Re: Вопрос математикам

Post by Privet »

Palych wrote: 26 Dec 2020 20:26 Предлагаю тупое, не математическое решение:
Найти пиковые точки, где предыдущее и последующее значения меньше.
И выбрать ту, что ближе к центру диапазона. Или ту что выше.

Если значений совсем мало - средневзвешивать не получится в принципе.
К сожалению, так не работает. У нас 256 точек БПФ. Используя разные методы, находим пик, а потом уточняем.
Ловушек много. Диапазон ОСШ, в котором всё должно работать, велик и высокое ОСШ, как это не парадоксально, не всегда обеспечивает лучший результат. Странно? Тем не менее. Вот и боремся.

Я сейчат спать. Работаю с Новосибирском. По тому времени и живу. Моим утром буду изучать по ссылкам. Пишите, пожалуйста, если будут ещё идеи.
Привет.
DropAndDrag
Уже с Приветом
Posts: 6018
Joined: 11 Mar 2011 05:36

Re: Вопрос математикам

Post by DropAndDrag »

Мысли в слух. Из последнего сообщение можно сделать вывод, что АЦП измеряет 256 точек, делается быстрое фурье преобразование и ищутся частоты из которых смодулирован приходящий сигнал. Частота ...- 32-...-60-..., тогда частота АЦП 60+ гц, кгц или мгц. Выше 2.5 мгц уже специфические штучки и будет неожиданно, что мощное ацп с дохлым процессором.
Если бы пару полных сигналов после fft посмотреть, то может быть чтото и придет в голову.
Еще можно покопаться в сторону природы сигнала. У масс-спектрометров такое нетривиальное преобразование после fft, а нахождение коэффициентов эмпирическое.
Palych
Уже с Приветом
Posts: 13681
Joined: 16 Jan 2001 10:01

Re: Вопрос математикам

Post by Palych »

Набрать экспериментальных данных побольше, скормить их нейронной сети, как-нибудь вынуть результат обучения и записать его на ПЛМ...
В любом случае данные собирать надо.
aml5691
Уже с Приветом
Posts: 832
Joined: 15 Jan 2004 18:42

Re: Вопрос математикам

Post by aml5691 »

Privet wrote: 26 Dec 2020 14:43 [...]

Надо определить самым точным образом (с точностью выше шага дискрет) определить центр этого "колокольчика". Какой математический аппарат может это сделать.

[...]
Чтобы какой-либо "математический аппарат" мог бы это сделать, нужно, как минимум, знать, что подразумевается под "центром этого "колокольчика"".

Один возможный способ дать корректное определение искомому "центру колокольчика" - рассмотреть гипотетический случай, когда (1) шумов нет совсем, и (2) функция измерена в каждой точке достаточно широкого интервала значений ее аргумента (т.е. с бесконечно маленьким шагом дискретизации). Что Вам нужно тогда считать "центром этого "колокольчика"" для Ваших целей? К примеру (a) значение аргумента функции в единственном максимуме этой функции на интервале измерений; или (b) первый момент функции, вычисленный по интервалу (т.е. центр тяжести графика, или среднее значение аргумента функции с весом равным значению функции); (c) положение локального центра симметрии графика функции; или что-либо другое?

При отсутствии шумов (но дискретных измерениях сигнала) и при дополнительном условии ограниченности спектра Вашей функции, одно эффектное решение для любого из определений (а), (b), (c) и некоторых других, можно получить использовав теорему Котельникова (Sampling Theorem):

Ру.Википедия: Теорема Котельникова

En.Wikipedia: Nyquist–Shannon sampling theorem

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

Подозреваю, что в предположениях теоремы Котельникова, но при наличии шумов, тоже есть интересные и полезные решения, но скорее всего для них нужно знать больше при природу шумов и их характеристики.
Last edited by aml5691 on 27 Dec 2020 01:04, edited 1 time in total.

Return to “Вопросы и новости IT”