Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Распознование синусоид / 15 сообщений из 15, страница 1 из 1
16.05.2005, 11:43
    #33066629
C955
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Неподскажите уважаемый All метод распознования синусоид. Т.е есть график, нужно определить синусоида это или нет (какая синусоида - неважно ).

Спасибо.
...
Рейтинг: 0 / 0
16.05.2005, 12:04
    #33066699
XM
XM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Преобразования Фурье?

---
"Raffiniert ist der Herr Gott, aber boshaft ist Er nicht." Albert Einstein
...
Рейтинг: 0 / 0
16.05.2005, 12:42
    #33066855
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Я конечно не специалист, но как бы стал делять я:
Есть график - значит надо понимать есть двумерный массив точек (x;y).
Во-первых, точно определить по нему не удастся в любом случае, поскольку количество точек конечное. И даже что происходит с функцией между двумя соседними точками неизвестно. Т.е. определить можно будет только с определенной погрешностью.
1) под "любой" синусоидой понимаем y=A*sin(k*x+b)+M?
2) Найти минимум YMin и максимум YMax функции. Вообще говоря любой максимум и минимум но чтобы между ними не было других минимумов и максимумов. В идеальном графике максимумы у синусоиды все одинаковые (минимумы тоже), в реальном могут отличаются на допустимую погрешность, т.е. в массиве может просто не быть точке настоящего максимума, а только точка близкая к нему. Также запомнить значение аргумента функции при котором имеем эти минимум и максимум Xmin и Xmax.
2)Разницу между минимумом и максимумом делим пополам и получаем амплитуду A=(YMax-YMin)/2.
3) M=YMax-A
4) Период синусоиды получим как T=2*abs(XMax-XMin); соответственно k=T/(2*pi)
5) b=pi/2-Xmax

Теперь получены все параметры - A, k, b, M. Подставляем их в исходную формулу и получаем формулу конкретной синусоиды. проверяешь подходят ли остальные точки графика под эту формулу. Если да - значит синусоида; нет - значит нет
Вроде так :-)
...
Рейтинг: 0 / 0
16.05.2005, 14:04
    #33067144
С995
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
DmitryЯ конечно не специалист, но как бы стал делять я:
Есть график - значит надо понимать есть двумерный массив точек (x;y).
Во-первых, точно определить по нему не удастся в любом случае, поскольку количество точек конечное. И даже что происходит с функцией между двумя соседними точками неизвестно. Т.е. определить можно будет только с определенной погрешностью.
1) под "любой" синусоидой понимаем y=A*sin(k*x+b)+M?
2) Найти минимум YMin и максимум YMax функции. Вообще говоря любой максимум и минимум но чтобы между ними не было других минимумов и максимумов. В идеальном графике максимумы у синусоиды все одинаковые (минимумы тоже), в реальном могут отличаются на допустимую погрешность, т.е. в массиве может просто не быть точке настоящего максимума, а только точка близкая к нему. Также запомнить значение аргумента функции при котором имеем эти минимум и максимум Xmin и Xmax.
2)Разницу между минимумом и максимумом делим пополам и получаем амплитуду A=(YMax-YMin)/2.
3) M=YMax-A
4) Период синусоиды получим как T=2*abs(XMax-XMin); соответственно k=T/(2*pi)
5) b=pi/2-Xmax

Теперь получены все параметры - A, k, b, M. Подставляем их в исходную формулу и получаем формулу конкретной синусоиды. проверяешь подходят ли остальные точки графика под эту формулу. Если да - значит синусоида; нет - значит нет
Вроде так :-)

идея, реально правда массив одномерный :)
и график может и не быть синусоидой, но этот подход можно использовать для построение шаблона и вычисления коэф. корреляции с исходным графиком.
...
Рейтинг: 0 / 0
16.05.2005, 15:35
    #33067474
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Код: plaintext
график может и не быть синусоидой
Так мы исходим из допущения что является. Если же это предположение было неверно, то мы это увидем по несоответствию других точек графика полученной формуле.

Код: plaintext
правда массив одномерный 
Тогда можно вторую размеренность (x) ввести самому. Т.е. берешь произвольную точку на X и произвольный шаг между точками (маленький). Потом добавляя это шаг получаешь вторую размеренность. Т.е. размечаешь X. То что будет отличаться от исходной (по которой были получены твои x-ы) не важно. Синусоида ведь :-)
...
Рейтинг: 0 / 0
16.05.2005, 15:57
    #33067555
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
2 Dmitry

Расчет периода у тебя - неверный. Из постановки никак не вытекает что массив точек задан для 1 периода.

2 C955

Анализ Фурье будет самым верным решением.
...
Рейтинг: 0 / 0
16.05.2005, 16:40
    #33067698
Dmitryzzzz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Ну если задано точек для меньше чем одного периода то вполне может и не работать
Если меньше полупериода, то не будет работать точно. А если период и более, то тогда будет работать правильно
...
Рейтинг: 0 / 0
17.05.2005, 09:08
    #33068637
C955
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
mayton2 C955

Анализ Фурье будет самым верным решением.

непонял, а как можно использовать для распознования синусоидного графика преобразование Фурье ?
...
Рейтинг: 0 / 0
17.05.2005, 10:12
    #33068754
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
2C955:
Преобразование Фурье для этого и существует - "распознавать" в сигнале различные синусоиды... ;-). Возьмите какой-нибудь Маткад, Матлаб и попробуййте сами.

все наши на www.corba.kubsu.ru
...
Рейтинг: 0 / 0
17.05.2005, 16:00
    #33069938
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Есть еще вариант - вычислить 2-ю производную, и сравнить с исходным графиком ...
...
Рейтинг: 0 / 0
17.05.2005, 19:06
    #33070562
C995
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Карабас БарабасЕсть еще вариант - вычислить 2-ю производную, и сравнить с исходным графиком ...
а подробнее ? :)
...
Рейтинг: 0 / 0
18.05.2005, 09:17
    #33071092
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
sin''(x)=-sin(x)
...
Рейтинг: 0 / 0
18.05.2005, 23:27
    #33073388
YRinat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Карабас БарабасЕсть еще вариант - вычислить 2-ю производную, и сравнить с исходным графиком ...

А если точки довольно дискретные то как производную считать? Слишком большая ошибка будет при вычисление второй производной.

Разложение в ряд Фурье получше будет. Но мне кажется период все-равно самому придется высчитывать...

Походу самый лучший выход, из простых, предложен Dmitry
...
Рейтинг: 0 / 0
19.05.2005, 08:54
    #33073629
C995
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
YRinat Карабас БарабасЕсть еще вариант - вычислить 2-ю производную, и сравнить с исходным графиком ...

А если точки довольно дискретные то как производную считать? Слишком большая ошибка будет при вычисление второй производной.

Разложение в ряд Фурье получше будет. Но мне кажется период все-равно самому придется высчитывать...

Походу самый лучший выход, из простых, предложен Dmitry

а если синусоида затухающая или период переменный, а если это вообще кривая у которой только часть имеет вид синусоиды ? :)

Вообщем, разрулила все автокорреляционная функция, которая для таких графиков имеет вполне определенный вид - затухающей синусоиды с равными периодами.
...
Рейтинг: 0 / 0
19.05.2005, 18:18
    #33075616
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распознование синусоид
Не удивительно. Автокорреляционный анализ и
анализ Фурье имеют много общего. ИМХО.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Распознование синусоид / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]