|
|
  |
Определение постоянной составляющей синусоиды... |
|
|
|
Nov 21 2008, 13:03
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830

|
Задача такая. Есть сигнал - синусоида с постоянной составляющей, которая может медленно изменяться. Синусоида оцифровывается и передаетя в комп буферами. Период синусоиды большой, заранее не известный, намного больше фиксированного размера буфера. Необходимо отслеживать изменение постоянной составляющей по приходу каждого буфера (уточнять с каждым буфером). Как такое можно сделать?
|
|
|
|
|
Nov 21 2008, 13:34
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830

|
Цитата А постоянная составляющая по какому-то закону изменяется (в зависимости от какого-то внешнего параметра, температуры, например) или непредсказуемо? Закон не известен. Можно с некоторыми оговорками предположить, что постоянная составляющая не изменяется. Но это грубовато. Цитата Оценивать мат. ожидание процесса. Это понятно. Как это сделать, если на входе только кусочки синусоиды, которые постепенно формируют период. А оценивать постоянную составляющую нужно сразу. Вообще-то я делал так: - усреднял полученный буфер и рассматривал его как первое приближение. - усреднял следующий буфер - и в качестве оценки постоянной составляющей брал среднее от двух предыдущих оценок - следующее приближение и т.д. Такая оценка в итоге сама превращалась в синусоиду...
|
|
|
|
|
Nov 21 2008, 14:12
|
Местный
  
Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066

|
Цитата(vladimir_m @ Nov 21 2008, 16:03)  Задача такая. Есть сигнал - синусоида с постоянной составляющей, которая может медленно изменяться. Синусоида оцифровывается и передаетя в комп буферами. Период синусоиды большой, заранее не известный, намного больше фиксированного размера буфера. Необходимо отслеживать изменение постоянной составляющей по приходу каждого буфера (уточнять с каждым буфером). Как такое можно сделать? Мат.ожидание (среднее в частном случае) это далеко не "постоянная" составляющая процесса. Достаточно усреднить синусоиду в районе pi/2 чтобы это увидеть  . Если оценку постоянной составляющей надо делать быстро, по каждому буферу, то можно попробовать метод МНК. Или ФНЧ как предлагали выше.
|
|
|
|
|
Nov 21 2008, 14:17
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830

|
Большое окно - это хорошо. Расчетом занимается и так комп, просто ему и так задач хватает. Буду думать как сделать расчет по окну более эффективным. А можно сделать размер окна адаптивным?
|
|
|
|
|
Nov 21 2008, 20:36
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(ivan219 @ Nov 21 2008, 22:57)  Зделать FFT и 0 отщёт будет = пост состовляющей. Круто! Средство на все случаи жизни.  Цитата(D.I.M.A @ Nov 21 2008, 16:16)  Оценивать мат. ожидание процесса. Глубокая мысль. А как это сделать практически, не подскажете?  Цитата(fontp @ Nov 21 2008, 18:07)  Фильтр НЧ с постоянной времени заведомо во много периодов синусоиды поможет.
Простейший рекурсивный y(n) = (1-e)* y(n-1) + e*x(n) , если всё равно какой в смысле времени реакции, е очень мало... Некошерно. В лоб решение, без мысли... Цитата(fontp @ Nov 21 2008, 18:07)  ...Но если это слишком медленно, то нужно сшивать буфера, оценивать период синусоиды и суммировать по периоду А как сшивать, ежели постоянка? Цитата(sysel @ Nov 21 2008, 16:49)  По идее, для получения постоянной составляющей надо устремить время усреднения к бесконечности (в разумных пределах, конечно). Я бы использовал достаточно большое плывущее окно, по которому бы и усреднял. Если девайсу Вашему памяти нехватает для большого плывущего окна - пусть компьютерная программа этим занимается.
Можно попробовать сделать цифровой НЧ фильтр, со срезом на низкой частоте (заведомо меньшей частоты Вашего полезного сигнала) М-да, лекарство не лучше болезни... Условиям задачи не удовлетворяет. А, между тем, решение существует. Цитата(vladimir_m @ Nov 21 2008, 16:03)  Задача такая. Есть сигнал - синусоида с постоянной составляющей, которая может медленно изменяться. Синусоида оцифровывается и передаетя в комп буферами. Период синусоиды большой, заранее не известный, намного больше фиксированного размера буфера. Необходимо отслеживать изменение постоянной составляющей по приходу каждого буфера (уточнять с каждым буфером). Как такое можно сделать? Для вычисления параметров синусоиды и определения постоянной составляющей теоретически достаточно 4-х отсчётов сигнала. Решением системы 4-х уравнений будут амплитуда, частота, фаза синусоиды и постоянка. В Вашей постановке с учётом дополнения задача имеет точное решение по содержимому только одного буфера. Возможность практической реализации ограничивается необходимой точностью при заданных параметрах выборки и заданном уровне помех. Оценки ПС в окнах выборки можно усреднять (с "забыванием", если подставка медленно меняется). Цитата(vladimir_m @ Nov 21 2008, 16:34)  Вообще-то я делал так: - усреднял полученный буфер и рассматривал его как первое приближение. - усреднял следующий буфер - и в качестве оценки постоянной составляющей брал среднее от двух предыдущих оценок - следующее приближение и т.д. Такая оценка в итоге сама превращалась в синусоиду... Криво, уж простите... Ничего хорошего так не выйдет.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 22 2008, 12:31
|
Участник

Группа: Новичок
Сообщений: 17
Регистрация: 9-07-08
Пользователь №: 38 830

|
Всем спасибо! Лично я остановился на варианте уважаемого fontp, как наиболее приемлемом алгоритмически для моей задачи.
Сообщение отредактировал vladimir_m - Nov 22 2008, 12:32
|
|
|
|
|
Nov 22 2008, 17:12
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Stanislav) Для вычисления параметров синусоиды и определения постоянной составляющей теоретически достаточно 4-х отсчётов сигнала. Решением системы 4-х уравнений будут амплитуда, частота, фаза синусоиды и постоянка. На практике к 4-ём отсчётам понадобится ещё подходящая фаза Юпитера  Цитата В Вашей постановке с учётом дополнения задача имеет точное решение по содержимому только одного буфера. На бумаге, не в реале. Без учёта разрешающей способности АЦП, джиттера, частоты выборки относительно частоты синуса, и т.д. и т.п. Думаю автор не указал ещё важные детали, которые сильно влияют на точность результата, типа шумов, посторонних сигналов (хотя бы 50 Гц частоты).
Сообщение отредактировал GetSmart - Nov 22 2008, 17:33
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 22 2008, 18:09
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(GetSmart @ Nov 22 2008, 20:12)  На практике к 4-ём отсчётам понадобится ещё подходящая фаза Юпитера Послушайте, уважаемый Получатель Разума. А не пора ли взяться за ум и прекратить писать всякую чушь по поводу вещей, о которых не имеете ни малейшего представления? Так что вот мой Вам совет: прекращайте обезьянничать и займитесь чем-нибудь более полезным. Цитата(GetSmart @ Nov 22 2008, 20:12)  ...На бумаге, не в реале. Без учёта разрешающей способности АЦП, джиттера, частоты выборки относительно частоты синуса, и т.д. и т.п. Думаю автор не указал ещё важные детали, которые сильно влияют на точность результата, типа шумов, посторонних сигналов (хотя бы 50 Гц частоты). Прежде, чем писать ерунду, прочитайте тему сначала. Особо обратите внимание на условие и на пост #11. Предложенный мною путь даст принципиально самую точную оценку за разумное время из всех, что здесь обнародованы. Можете справиться у ув. fontp. Естественно, его нужно довести до ума. Но если Автору темы не надо - зачем же тогда зря стараться?
Сообщение отредактировал Stanislav - Nov 22 2008, 19:28
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 22 2008, 23:38
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Stanislav) Послушайте, уважаемый Получатель Разума. Только настоящий "Получатель Разума" в контексте вопроса автора темы мог написать такое: Цитата Для вычисления параметров синусоиды и определения постоянной составляющей теоретически достаточно 4-х отсчётов сигнала. ... В Вашей постановке с учётом дополнения задача имеет точное решение по содержимому только одного буфера. Мне до такого разума ещё далеко  Можно поинтересоваться, как посчитать точный результат в буфере, равном 1/30 периода синусоиды, где все значения 10-битные, а амплитуда синусоиды допустим 2-3 бита? Если очень хочется, то 4  И как этот самый точный результат будет меняться от одного буфера к следующему? С нетерпением жду чуда  Цитата Предложенный мною путь даст принципиально самую точную оценку за разумное время из всех, что здесь обнародованы. Можете справиться у ув. fontp. Может он написан невидимыми чернилами, но не видно его, ей богу
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 23 2008, 00:14
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(GetSmart @ Nov 23 2008, 02:38)  Только настоящий "Получатель Разума" в контексте вопроса автора темы мог написать такое... Вот глупенький... Читаем ещё раз (у остальных посетителей прошу прощения за самоцитирование): Цитата Для вычисления параметров синусоиды и определения постоянной составляющей теоретически достаточно 4-х отсчётов сигнала. Решением системы 4-х уравнений будут амплитуда, частота, фаза синусоиды и постоянка. В Вашей постановке с учётом дополнения задача имеет точное решение по содержимому только одного буфера. Возможность практической реализации ограничивается необходимой точностью при заданных параметрах выборки и заданном уровне помех. Оценки ПС в окнах выборки можно усреднять (с "забыванием", если подставка медленно меняется). Для говорунов, "отличающихся умом и сообразительностью", ключевое слово и фразу выделил. Даже до Вас должно начать доходить. В противном случае - увы, медицина бессильна. Цитата(GetSmart @ Nov 23 2008, 02:38)  Мне до такого разума ещё далеко  Нисколько в этом не сомневаюсь. Цитата(GetSmart @ Nov 23 2008, 02:38)  ...Можно поинтересоваться, как посчитать точный результат в буфере, равном 1/30 периода синусоиды, где все значения 10-битные, а амплитуда синусоиды допустим 2-3 бита? Если очень хочется, то 4  И как этот самый точный результат будет меняться от одного буфера к следующему? С нетерпением жду чуда Ждите, дорогой, ждите. Как тот кот над дыркой. Цитата(GetSmart @ Nov 23 2008, 02:38)  Может он написан невидимыми чернилами, но не видно его, ей богу Вы смысл написанного не можете понять, только и всего. Если автору темы будет интересно, можно и разжевать. Вы же помучайтесь.  И о консультации у старших товарищей не забывайте: метод обращения к авторитету, вероятно, для Вас - единственный путь Получения Разума, так как головой вы думать не способны, что и подтверждаете в очередной раз.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 23 2008, 22:24
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Stanislav) Возможность практической реализации ограничивается необходимой точностью при заданных параметрах выборки и заданном уровне помех. Я уже привёл пример исходных данных, которые не позволят вычислить ваши пустые обещания. Можете продолжать вертеться как клоуны в цирке, но мне и другим давно ясно что вы пи...бол. ЗЫ. Даже Котельников так беспардонно не насиловал математику  Цитата(fontp) Но если это слишком медленно, то нужно сшивать буфера, оценивать период синусоиды и суммировать по периоду Это пока что самый простой, точный и оперативный (по задержке между сигналом и результатом) из предложенных здесь методов. При условии, что между поступающими буферами нет потерянных отсчётов. Если вдруг будет постоянка, то любая сумма (делённая на кол-во отсчётов) любого кол-ва отсчётов будет правильным результатом  Причём когда в сигнале есть только одна синусоида и она значительно больше шумов, то достаточно найти два пика этой синусоиды (без т.н. "оценивания") и посчитать сумму между ними.
Сообщение отредактировал GetSmart - Nov 23 2008, 22:32
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 23 2008, 23:20
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(GetSmart @ Nov 24 2008, 01:24)  Я уже привёл пример исходных данных, которые не позволят вычислить ваши пустые обещания. Да зачем мне Ваши данные? Я основываюсь на информации, предоставленной Автором темы. Ваши же вопросы достойны отдельного раздела на форуме. Цитата(GetSmart @ Nov 24 2008, 01:24)  ...Можете продолжать вертеться как клоуны в цирке, но мне и другим давно ясно что вы пи...бол. А вот по поводу этого заявления, уважаемый, будет направлена жалоба в администрацию. Надеюсь, что попрошайничество на сей раз Вам не поможет снять взыскание. И кто эти "другие", не могли бы просветить? Цитата(GetSmart @ Nov 24 2008, 01:24)  ЗЫ. Даже Котельников так беспардонно не насиловал математику  Да ладно Вам, ниспровергатель основ, на Котельникова напраслину возводить. Признайтесь лучше, что не понимаете сути открытого им закона. Одна тема про разрешающую способность АЦП с плавным переходом к "опровержению" теоремы отсчётов чего стоит. Ну, а на меня - тем более не надо.  Ибо, в отличие от Котельникова, я Ваше невежество могу вытащить на свет божий и распластать пред взоры публики не отходя от кассы. Цитата(GetSmart @ Nov 24 2008, 01:24)  ...Это пока что самый простой, точный и оперативный (по задержке между сигналом и результатом) из предложенных здесь методов. А Вы у ув. fontp не забыли по этому поводу получить консультацию? Если нет - не тяните и сделайте это сейчас же! Он-то знает, что это вовсе не так. Цитата(GetSmart @ Nov 24 2008, 01:24)  ...При условии, что между поступающими буферами нет потерянных отсчётов. Этого в условии нет. Кроме того, сказано (нужное традиционно выделил  ) : Цитата(vladimir_m @ Nov 21 2008, 16:03)  Задача такая. Есть сигнал - синусоида с постоянной составляющей, которая может медленно изменяться. Синусоида оцифровывается и передаетя в комп буферами. Период синусоиды большой, заранее не известный, намного больше фиксированного размера буфера. Необходимо отслеживать изменение постоянной составляющей по приходу каждого буфера (уточнять с каждым буфером). Как такое можно сделать? Цитата(vladimir_m @ Nov 21 2008, 16:34)  ...А оценивать постоянную составляющую нужно сразу. Вот я и предложил способ, который определяет постоянную составляющую "сразу". А потом может её уточнять с приходом каждого последующего буфера. Цитата(GetSmart @ Nov 24 2008, 01:24)  ...Если вдруг будет постоянка, то любая сумма (делённая на кол-во отсчётов) любого кол-ва отсчётов будет правильным результатом  Дорогой, Вы меня способны уморить насмерть. Пожалейте, ради бога, не выдавайте больше таких откровений... Цитата(GetSmart @ Nov 24 2008, 01:24)  ...Причём когда в сигнале есть только одна синусоида и она значительно больше шумов, то достаточно найти два пика этой синусоиды (без т.н. "оценивания") и посчитать сумму между ними. А это как: "посчитать сумму между ними", т.е., двумя пиками, как Вы изволили выразиться? Вот и посчитайте её для своих же условий. А я посмеюсь.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 23 2008, 23:45
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Stanislav @ Nov 24 2008, 05:20)  А вот по поводу этого заявления, уважаемый, будет направлена жалоба в администрацию. И, надеюсь, что попрошайничество на сей раз Вам не поможет снять взыскание. Ну вы прямо как девочка... Будет жаловаться. Прямого нарушения правил нет, успокойтесь  Где конкретный алгоритм расчёта постоянки только по одному буферу? Либо выкладывайте, либо слив засчитан. Отмазки типа "знаю, но не скажу" оставьте для своих обожателей.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 23 2008, 23:49
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(GetSmart @ Nov 24 2008, 02:45)  Ну вы прямо как девочка... Будет жаловаться. Прямого нарушения правил нет, успокойтесь  Это решать модераторам. Скриншоты имеются. Надеюсь, они примут правильное решение. Цитата(GetSmart @ Nov 24 2008, 02:45)  ...Где конкретный алгоритм расчёта постоянки только по одному буферу? Либо выкладывайте, либо слив засчитан. Отмазки типа "знаю, но не скажу" оставьте для своих обожателей. Так не пойдёт. Давайте на деньги поспорим. Не будет алгоритма - деньги Ваши. Ну, а уж будет - мои. За бесплатно доказывать Вам что-либо не имею желания боле.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 24 2008, 08:17
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(Tanya @ Nov 22 2008, 15:58)  Несколько странно... Такой метод подойдет ведь для сигналов любой формы и их суммы. Если Вы точно знаете, что там одна чистая синусоида, то можно эффективнее... Хозяин - барин. Существует закон Парето, утверждающий что для каждой задачи существует наиболее эффективное решение, на 80% от идеала, которое обеспечивают 20% усилий  Больше и не надо. Зачем платить больше?  В реальной жизни судбба оставшихся 20% от совершенства в руках менеджеров. Не дело это экспертов... У менеджеров тут только 2 выхода : или удовлетвориться достигнутым, или нанять 10 низкоквалифицированых недорогих студней, чтобы пилить дальше чистое золото В принципе, если бы в условиях задачи было бы сказано, что частота синусоиды находится в диапазоне, то можно было бы предложить следующее (менее простое но более совершенное) решение: вычистить синусоиду режектором Походу, чем более "совершенно" решение - тем менее оно робастно (т.е. устойчиво и структурно устойчиво), поскольку зиждется на большем числе СОМНИТЕЛЬНЫХ предположений Более "эффективное", в смысле совершенное решение не адекватно условию задачи Оценивать синусоиду - это уже последнее дело. Но кривизна буферов никакой роли не играет. Это не должно смущать автора поста. Если даже данные асинхронны, их можно всегда загнать в линию задержки, которую для решения задачи рассматривать как буфер произвольной длины (до длины линии задержки max)
|
|
|
|
|
Nov 24 2008, 08:30
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(fontp @ Nov 24 2008, 11:17)  В принципе, если бы в условиях задачи было бы сказано, что частота синусоиды находится в диапазоне, то можно было бы предложить следующее (тоже простое но эффективное) решение: вычистить синусоиду режектором Странно... Я готов был услышать подобное от GetSmart, но не от Вас. Сколько времени уйдёт на такую вот режекцию, ну, сколько переходный процесс будет длиться? Уж лучше тогда действительно период вычислить, а потом по нему усреднять, как предлагает этот "теоретик". Режекция может быть эффективна только если период синусоиды известен определённо. Что есть тавталогия. Кроме того, не сказано, что в сигнале нет разрывов. Цитата(fontp @ Nov 24 2008, 11:17)  ...Более "эффективное" в смысле совершенное не адекватно условию задачи Почему же? Оно соответствует условиям в полной мере, только вычислительно гораздо сложнее.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 24 2008, 08:41
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(Stanislav @ Nov 24 2008, 11:30)  Странно... Я готов был услышать подобное от GetSmart, но не от Вас. Сколько времени уйдёт на такую вот режекцию, ну, сколько переходный процесс будет длиться? Уж лучше тогда действительно период вычислить, а потом по нему усреднять, как предлагает этот "теоретик". Режекция может быть эффективна только если период синусоиды известен определённо. Что есть тавталогия. Кроме того, не сказано, что в сигнале нет разрывов. Почему же? Оно соответствует условиям в полной мере, только вычислительно гораздо сложнее. Просто Вы не знакомы с законом Парето и основным принципом принятия эффективного решения "80 на 20". Нужно использовать всегда простейшие решения из возможных. Workaround, если Вам это что нибудь говорит, а не нанотехнологию Про время измерения я упомянул в самом первом посте. Про время ничего не сказано автором. Поэтому можно догадаться, что чуваку время пофиг по умолчанию или около того. Надо исходить из того, что всё что упущено в условии - пофиг, а не усложнять задачу выдумками... Поэтому самое первое и общее решение - НЧ-фильтрация, полосовая режекция - второе решение (полоса определяет время) и т.д. ЗЫ. Извините, Stanislav, а со своими разрывами Вы вообще всех уже задолбали ещё в начале лета. Про разрывы ничего не сказано, про разрывы Вы придумали
|
|
|
|
|
Nov 24 2008, 09:01
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(fontp @ Nov 24 2008, 11:41)  Просто Вы не знакомы с законом Парето и основным принципом принятия эффективного решения "80 на 20". Нужно использовать всегда простейшие решения из возможных. Workaround, если Вам это что нибудь говорит, а не нанотехнологию Я так не считаю. Простейшие решения - часто оказываются не самыми лучшими. А закон Парето - лишь пример словоблудия, основное положения которого не сможете доказать ни Вы, ни кто-либо другой. Кроме того, по поводу 80% - Вы себе явно льстите.  Предложенный Вами метод даст результат через неопределённое время. Цитата(fontp @ Nov 24 2008, 11:41)  ...Про время измерения я упомянул в самом первом посте. Про время ничего не сказано автором. Как это не сказано? Постоянная составляющая ему нужна "сразу". Прочитайте ещё раз условия. Цитата(fontp @ Nov 24 2008, 11:41)  ...Поэтому можно догадаться, что чуваку время пофиг по умолчанию или около того. Надо исходить из того, что всё что упущено в условии - пофиг, а не усложнять задачу выдумками... Поэтому самое первое и общее решение - НЧ-фильтрация, полосовая режекция - второе решение (полоса определяет время) и т.д. Решение в лоб и без мысли, как я и писал уже... Цитата(fontp @ Nov 24 2008, 11:41)  ...ЗЫ. Извините, Stanislav, а со своими разрывами Вы вообще всех уже задолбали ещё в начале лета. Какими такими "моими разрывами"? И кого это "всех"? Настоятельно прошу ответить. Цитата(fontp @ Nov 24 2008, 11:41)  ...Про разрывы ничего не сказано, про разрывы Вы придумали  Если нет - значит нет. Про это тоже нигде не сказано. Собственно, я на этом не настаиваю, и принципиально это ничего не меняет.
Сообщение отредактировал Stanislav - Nov 24 2008, 09:11
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 24 2008, 09:51
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(Stanislav @ Nov 24 2008, 12:01)  Кроме того, по поводу 80% - Вы себе явно льстите.  Предложенный Вами метод даст результат через неопределённое время. Да ладно... Переходное время линейного фильтра равно обратному значению его полосы. Вполне определённое. Другое дело, что называет автор под "медленно меняющейся постоянной составляющей", может она "медленно меняется" быстрее чем переходное время фильтра  Поэтому я получу результат за известное время ВСЕГДА. Возможно, это будет не то, что хотелось автору. Какой вопрос - такой ответ Цитата(Stanislav @ Nov 24 2008, 12:01)  Как это не сказано? Постоянная составляющая ему нужна "сразу". Прочитайте ещё раз условия. Про "сразу" это он погорячился. И не в условии, а потом... В любом случае для того, чтобы отличить компоненту частоты 0 от компоненты частоты F ему нужно время измерения сигнала как минимум 1/F Цитата(Stanislav @ Nov 24 2008, 12:01)  Решение в лоб и без мысли, как я и писал уже... Какими такими "моими разрывами"? И кого это "всех"? Настоятельно прошу ответить. Разрывами, которые Вы собрались сшивать по непрерывности сигнала. Существование разрывов во времени, когда сигнал не регистрируется, обычно есть признак неправильного проектирования девайса. Тогда задним числом программными методами пытаются замутить компенсацию ошибки аппаратного проектирования. Бывает, но не типично... В маломальски приличном шуме ничего реально "по непрерывности" Вы не зашьете, пустое "Все" - это все, кроме Вас. Понятно, что это моё частное мнение + мнение тех с кем этот вопрос мной обсуждался  Нет-нет-и-нет. Никакой фигни "по непрерывности" в практических случаях не бывает И не смейте меня винить в хамстве и грозить забанить! В Вашем стиле... Сначала обозвать оппонента "без мысли", потом бежать ябедничать модераторам ;-) ЗЫ. В дискуссии о "сшивании сигнала по непрерывности" я участвовать не собираюсь. Мое мнение что это фигня, оправданная только для отмазок от предъяв заказчика, когда бабки потрачены на проектирование кривого устройства. Денег всё равно уже нет, нужно искать цивилизованное решение и т.д.
|
|
|
|
|
Nov 24 2008, 21:03
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(fontp @ Nov 24 2008, 12:51)  Про "сразу" это он погорячился. И не в условии, а потом... В любом случае для того, чтобы отличить компоненту частоты 0 от компоненты частоты F ему нужно время измерения сигнала как минимум 1/F Не обязательно. Если функция известна, а в данном случае это y = a + b*sin(2*pi*f + phi), То при достаточном отношении сигнал/шум можно применить "fitting".
--------------------
|
|
|
|
|
Nov 25 2008, 00:31
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(fontp @ Nov 24 2008, 12:51)  Да ладно... Переходное время линейного фильтра равно обратному значению его полосы. Вполне определённое. Другое дело, что называет автор под "медленно меняющейся постоянной составляющей", может она "медленно меняется" быстрее чем переходное время фильтра Очень распространённое заблуждение, обычно выдающее дилетанта. "Переходное время фильтра", как Вы изволили выразиться, определяется, в общем, не шириной его полосы, а крутизной спада спектральных составляющих в переходной полосе (т.е, эквивалентной добротностью), отнесённой к частоте среза этого фильтра. Не устаю вам в очередной раз удивляться... В данном случае, уже с кислым привкусом... Цитата(fontp @ Nov 24 2008, 12:51)  Поэтому я получу результат за известное время ВСЕГДА. Возможно, это будет не то, что хотелось автору. Какой вопрос - такой ответ Да я и не спрашивал особенно ни о чём... Только вот в условии написано: Цитата(vladimir_m @ Nov 21 2008, 16:03)  ...Синусоида оцифровывается и передаетя в комп буферами. Период синусоиды большой, заранее не известный, намного больше фиксированного размера буфера... Отсюда явно следует, что результат Вы получите за время заранее неизвестное, то есть, неопределённое. Хотелось бы верить, что хоть сейчас это стало понятным... Цитата(fontp @ Nov 24 2008, 12:51)  ...Про "сразу" это он погорячился. И не в условии, а потом... Не заставляйте подозревать Вас в лукавстве. Это условие было обнародовано до Вашего, равно как и моего, первого поста. Насчёт "погорячился" - это лишь Ваши придумки. Лично я предпочитаю понимать всё именно так, как написано. Цитата(fontp @ Nov 24 2008, 12:51)  ...В любом случае для того, чтобы отличить компоненту частоты 0 от компоненты частоты F ему нужно время измерения сигнала как минимум 1/F Это верно лишь в применению к Вашим советам. Я же предлагаю метод, который будет на порядок-другой быстрее. Более конкретно, он выдаст результат на основании данных только одного буфера, если уровень скммарных помех будет не слишком велик, т.е., в T/t раз быстрее, чем Ваш (T-период синусоиды, t-длина буфера). Цитата(fontp @ Nov 24 2008, 12:51)  ...Разрывами, которые Вы собрались сшивать по непрерывности сигнала. Повторяю вопрос: почему эти разрывы "мои"? Прошу ответить. И каким это образом я "пытался сшивать разрывы по непрерывности сигнала"? Вы хоть понимаете, что сейчас написали? ЗЫ. Вероятно, речь идёт об этой теме. Я бы на Вашем месте не позорился. Цитата(fontp @ Nov 24 2008, 12:51)  ...Существование разрывов во времени, когда сигнал не регистрируется, обычно есть признак неправильного проектирования девайса. Да что Вы говорите? У нас, например, такие дивайсы делают - только в путь. А об их "неправильном проектировании" судить, к счастью, не Вам, а потребителям. Цитата(fontp @ Nov 24 2008, 12:51)  ...Тогда задним числом программными методами пытаются замутить компенсацию ошибки аппаратного проектирования. Бывает, но не типично... Если "бывает", зачем тогда об этом здесь писать? "Ошибки проектирования", повторюсь, целиком на Вашей совести. Цитата(fontp @ Nov 24 2008, 12:51)  В маломальски приличном шуме ничего реально "по непрерывности" Вы не зашьете, пустое Предлагаю волевым усилием перейти в "ту" тему, и пообщаться там. Цитата(fontp @ Nov 24 2008, 12:51)  ..."Все" - это все, кроме Вас. Понятно, что это моё частное мнение + мнение тех с кем этот вопрос мной обсуждался Там я пояснил, как, вопреки Вашему мнению, задача может быть решена. И многие посетители это поняли, и прогнали у себя на компах матлабовский алгоритм, мною там выложенный, чтобы убедиться в такой возможности. Алгоритм с тех пор доработан, и почти готов. Если есть желание - предлагаю обсудить, только без надувания щёк и фырканья. А о тех, с кеми этот вопрос обсуждался, не имею чести, так сказать... В теме наблюдал кучку неучей, неспособных принять очевидное, даже выраженное в матлабовском коде и выложенное в виде диаграмм. Так что проецировать на "всех" своё невежество настоятельно не рекомендую. Отвечайте за себя, если уж поспорить хочется. Цитата(fontp @ Nov 24 2008, 12:51)  Нет-нет-и-нет. Никакой фигни "по непрерывности" в практических случаях не бывает Жыыыр. Цитата(fontp @ Nov 24 2008, 12:51)  ...И не смейте меня винить в хамстве и грозить забанить! В Вашем стиле... Сначала обозвать оппонента "без мысли", потом бежать ябедничать модераторам ;-) Я бы предпочёл высечь ремнём оппонента, затеявшего этот безсмысленный спор. Однако, по причине географической удалённости, предпочитаю действовать в соответствии с Правилами форума, не вступая в излишнюю полемику с их нарушителем. Если не знаешь, как поступить, поступай по уставу (ЦЭ) На Вас же пока я не жаловался, так что не волнуйтесь понапрасну. Цитата(fontp @ Nov 24 2008, 12:51)  ...ЗЫ. В дискуссии о "сшивании сигнала по непрерывности" я участвовать не собираюсь. Мое мнение что это фигня, оправданная только для отмазок от предъяв заказчика, когда бабки потрачены на проектирование кривого устройства. Денег всё равно уже нет, нужно искать цивилизованное решение и т.д. Скучно читать Вас, ей-богу. Такую чушь пишете... А ещё инженером называетесь, наверное... Цитата(GetSmart @ Nov 25 2008, 01:23)  Возможный уровень ошибки из-за нецелого числа периодов в FFT будет A/N, где A = амплитуда синусоиды, N = кол-во целых периодов синусоиды в расчётных отсчётах. При вычислении нового FFT после прихода нового буфера этот уровень ошибки выльется пульсациями в результате. Прикол в том, что ошибка будет приблизительно равна ошибке в вычислении простого средне арифметического всех отсчётов А это что? Цитата(vladimir_m @ Nov 21 2008, 16:03)  Синусоида оцифровывается и передаетя в комп буферами. Период синусоиды большой, заранее не известный, намного больше фиксированного размера буфера. Теоретик, так и растак... Цитата(GetSmart @ Nov 25 2008, 02:54)  По приходу нового буфера берётся несколько последних буферов (с гарантированным хотя бы одним периодом) и точно определяется период опорной частоты методом корелляции. Цитата(GetSmart @ Nov 25 2008, 02:54)  ...Интеграл сигнала от периода даст постоянку. Влияние шумов на результат минимально. Широкие просторы для оптимизации. Цитата(GetSmart @ Nov 25 2008, 02:54)  ...Начиная от начального поиска пика корелляции в допустимых пределах частоты синусоиды и до последующего использования в алгоритме корелляции минимального кол-ва буферов, равного 1..1.5 от периода. Плюс учёт первоначального постоянного смещения (постояннки) между периодами для повышения точности результата. fontp, это ведь один из тех, с кем Вы обсуждали мои алгоритмы, правда? Ещё 729 и Переключателя не хватает для полного комплекта. Цитата(alexkok @ Nov 25 2008, 00:03)  Не обязательно. Если функция известна, а в данном случае это y = a + b*sin(2*pi*f + phi), То при достаточном отношении сигнал/шум можно применить "fitting". Совершенно так! Это я и пытаюсь доказать оппонентам. С нулевым результатом, по причинам, от меня не зависящим. В присутствии шумов и ошибок дискретизации придётся "решать" передетерминированную систему. Но самое важное, что функциональная зависимость сигнала известна точно! И поэтому такой подход даст наилучший результат по сравнению со всеми другими, предложенными в данной теме, при любых критериях оптимизации. Конечно, по мере накопления материала вычислительная сложность задачи будет увеличиваться. С некоторого времени придётся или усекать окно, или переходить на другой, более простой способ. Но к этому времени оценка параметров сигнала уже давно будет, тогда, как ув. fontp со своими ФНЧ и режекторными фильтрами будет её ждать до посинения.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 25 2008, 07:30
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
ЗЫ. fontp, я готов прекратить спор, если будет признано, что написанное GetSmart неверно: Цитата(GetSmart @ Nov 24 2008, 01:24)  Цитата(fontp @ Nov 21 2008, 18:07)  Но если это слишком медленно, то нужно сшивать буфера, оценивать период синусоиды и суммировать по периоду Это пока что самый простой, точный и оперативный (по задержке между сигналом и результатом) из предложенных здесь методов. При условии, что между поступающими буферами нет потерянных отсчётов. Если вдруг будет постоянка, то любая сумма (делённая на кол-во отсчётов) любого кол-ва отсчётов будет правильным результатом А вот это верно: Цитата(Stanislav @ Nov 22 2008, 21:09)  Предложенный мною путь даст принципиально самую точную оценку за разумное время из всех, что здесь обнародованы. Естественно, в алгоритмическом смысле, без учёта вычислительных затрат. Собственно, это и составляет смысл дискуссии. В противном случае, придётся проводить ликбез с демонстрацией. Но тогда уж без обид, пожалуйста.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 25 2008, 07:54
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(alexkok @ Nov 25 2008, 00:03)  Не обязательно. Если функция известна, а в данном случае это y = a + b*sin(2*pi*f + phi), То при достаточном отношении сигнал/шум можно применить "fitting". Fitting в присутствии шума работает плохо, как всякая параметрическая модель. Цитата(Stanislav @ Nov 25 2008, 10:30)  ЗЫ. fontp, я готов прекратить спор, если будет признано, что написанное GetSmart неверно:
Это пока что самый простой, точный и оперативный (по задержке между сигналом и результатом) из предложенных здесь методов. При условии, что между поступающими буферами нет потерянных отсчётов. Если вдруг будет постоянка, то любая сумма (делённая на кол-во отсчётов) любого кол-ва отсчётов будет правильным результатом А вот это верно:Естественно, в алгоритмическом смысле, без учёта вычислительных затрат. Собственно, это и составляет смысл дискуссии.
В противном случае, придётся проводить ликбез с демонстрацией. Но тогда уж без обид, пожалуйста. А с вами никто и не спорит, неуч  Спор давно закончен. А здесь две страницы вашего флуда, писсатель. По поводу вашего метода ничего сказать не могу, честно, не стану врать - как хам, возомнивший о себе, вы у меня давно в игноре. Соответственно, ваши посты я обычно не читаю, разве что в разделе общение, чисто поржать включаю Цитата(vladimir_m @ Nov 22 2008, 15:31)  Всем спасибо! Лично я остановился на варианте уважаемого fontp, как наиболее приемлемом алгоритмически для моей задачи.
|
|
|
|
|
Nov 25 2008, 08:23
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(fontp @ Nov 25 2008, 10:54)  Fitting в присутствии шума работает плохо, как всякая параметрическая модель. А кто говорил о шуме, уважаемый? Кроме того, смею Вас заверить: фиттинг в шуме работает как раз хорошо. Обусловленность матриц потому что хорошая. Цитата(fontp @ Nov 25 2008, 10:54)  ...А с вами никто и не спорит, неуч  Спор давно закончен. А здесь две страницы вашего флуда, писсатель. По поводу вашего метода ничего сказать не могу - как хам, возомнивший о себе, вы у меня давно в игноре. Соответственно, ваши посты я обычно не читаю, разве что в разделе общение, чисто поржать Ну, что же Вы так нервничаете, уважаемый? Спокойнее надо, серьёзнее себя вести. Я ведь тоже могу ошибаться. Вот и подумалось, что со мной кто-то захотел поспорить. Очень рад, что это были не Вы. Только выражаетесь вот снова как-то вычурно, во множественном числе. Слова нехорошие употребляете... Некрасиво... Рекомендую зверобой и валериану. И почему же я у Вас давно в игноре? Уж не за ту ли тему, упомянутую Вами, где я объяснил, Вам как надо решать задачу, и даже показал наглядно? Дык, за это спасибо говорить надо, а не в игнор ставить, по-моему...
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 25 2008, 17:52
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(fontp @ Nov 25 2008, 10:54)  Fitting в присутствии шума работает плохо, как всякая параметрическая модель. Fitting, как Вам уже ответили, при шуме работает хорошо. Вопрос только - какую точность удастся получить. Зависит от длины буфера, сигнал/шум, соотношения длины буфера и периода частоты, соотношения амплитуд синусоиды и величины постоянки. Вполне возможно что одного буфера будет достаточно. А с двумя буферами, если задержка между ними известна и достаточно велика, правильный результат почти гарантирован.
--------------------
|
|
|
|
|
Nov 25 2008, 23:17
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(alexkok) Fitting, как Вам уже ответили, при шуме работает хорошо. Вопрос только - какую точность удастся получить. Что-то более конкретное можете сказать? Например для 1К буфера, 10 битные сэмплы, 7 бит (+-128) амплитуда, S/N=20dB, период синусоиды = 10 буферов. Цитата соотношения амплитуд синусоиды и величины постоянки. А это как влияет на точность?
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 26 2008, 08:10
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(GetSmart @ Nov 26 2008, 02:17)  А это как влияет на точность? Вы забыли уровень постоянки. А постоянка, если я правильно понял автора, и есть параметр который нужно измерить, причем быстро. Всё остальное, в том числе и синусоида, является шумом по отношению к постоянке. Примем для определенности уровень постоянки в 10 единиц. Цитата Что-то более конкретное можете сказать? Например для 1К буфера, 10 битные сэмплы, 7 бит (+-128) амплитуда, S/N=20dB, период синусоиды = 10 буферов. Попробую грубо прикинуть. Вывести точные формулы для оценки ошибки желающие могут сами. После корреляции с 1к буфером будем иметь S/N 50дБ. Т. е. для полной синусоиды мы бы имели ошибку амплитуды ~0,3% и фазы около 0,3гр. Т. к. мы имеем только 10% периода, то ошибка будет на порядок больше. Итого где-то 4 единицы ошибки, т. е. для постоянки ошибка будет около 40%. Желающие меня поправят. Цитата (blackfin) Предлагаю на поставленную задачу посмотреть под другим углом. Для выделения полезного сигнала на фоне шума ничего лучше согласованного фильтра, насколько мне известно, ещё не придумали. В данной задаче полезным сигналом является постоянная составляющая. Согласованным фильтром для неё будет ФНЧ с бесконечно узкой полосой пропускания. Ч.Т.Д. Проблема в том, что автор хочет получить результат быстро, а не через бесконечное время.
Сообщение отредактировал alexkok - Nov 26 2008, 08:12
--------------------
|
|
|
|
|
Nov 26 2008, 09:02
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(Михаил_K @ Nov 26 2008, 07:58)  Что такое? Наш всезнайка не знает как определить коэффициент К? Но-но, полегче, юноша. Я действительно не знаю, как определить коэффициент К при данной постановке задачи. Цитата(Михаил_K @ Nov 26 2008, 07:58)  ...ИМХО: Если человек обладает хотя-бы десятой частью тех знаний, которые вы, Станислав, здесь пытаетесь показать, то он легко может отличить"Чудо-алгоритм" от примитивного рекурсивного ФНЧ. Мда... Вы, вероятно, не обладаете и одной сотой. Поскольку предлагаемый Вами чудо-алгоритм и есть "примитивный рекурсивный ФНЧ".
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 26 2008, 10:43
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(RadioJunior) Со мной кто-нибудь согласен по этому поводу? Молчание - знак согласия  Цитата(alex_os) И чтобы посчитать туже корреляцию разве не нужно накопить достаточный блок данных? Достаточно двух периодов сигнала. То есть реальных, а не предположительно максимального периода для постоянной времени фильтра.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 26 2008, 21:29
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(RadioJunior @ Nov 26 2008, 12:11)  пост не в тему... Зачем? Цитата(RadioJunior @ Nov 26 2008, 12:11)  Stanislav, не обижайтесь, но это правда.
Вот какую ветку ни открою, везде Stanislav пытается всем утереть нос под видом большого знатока всего и вся. Во-первых, не всем. На электрониксе тусуется табунок неучей, охарактеризованных мной в теме, на которую здесь есть ссылка. Отличительная особенность - неистребимое желание писать ерунду во всех ветках, которые Вам довелось открывать, и не только, а также паталогическая неспособность признавать свои ошибки или неправоту и вести конструктивный диалог. Вот он-то и является предметом моего особенного внимания, о чём я объявлял каждой особи открыто и доходчиво. Во-вторых, пытаюсь утереть сопли, или всё-таки утираю? РадиоЮноша, пора бы научится отличать эти понятия. Докажите, что я неправ в чём-либо, и у нас с Вами будет полное взаимопонимание. А флудить здесь не надо - тема вполне конкретная, а Вам-то я хорошо знаю цену - сосунок, вздумавший, что ему можно хамить дяде (письма личные привести, чтобы все полюбовались?). В-третьих, кто-то получил по заслугам за излишнее высокомерие и вальяжность. От маклауда через тяжеловеса. В дальнейшем будет придерживать язык, я думаю. С вашей командой у меня разговор короткий. Давил, и буду давить, пока уму-разуму не научитесь, не начнёте признавать свои ошибки и говорить по существу вопроса. Вы также являетесь ярким представителем данного сообщества, и на снисхождение не надейтесь. Жаль, времени на вас всех мало... На месте модераторов я бы уделил вашей стайке самое пристальное внимание. Толку от ваших постов чуть, а словесного мусора - выше крыши. Цитата(RadioJunior @ Nov 26 2008, 12:11)  Это кризис возраста или врожденный комплекс Наполеона?... Отнюдь. Элементарное желание сделать воздух на форуме чище. Можете считать меня ассенизатором.  Цитата(RadioJunior @ Nov 26 2008, 12:11)  ...Со мной кто-нибудь согласен по этому поводу? Конечно, есть такие! Цитата(blackfin @ Nov 26 2008, 08:23)  Предлагаю на поставленную задачу посмотреть под другим углом. Для выделения полезного сигнала на фоне шума ничего лучше согласованного фильтра, насколько мне известно, ещё не придумали. В данной задаче полезным сигналом является постоянная составляющая. Согласованным фильтром для неё будет ФНЧ с бесконечно узкой полосой пропускания. Ч.Т.Д. Это верно. Только ФНЧ с бесконечно узкой полосой пропускания будет иметь и бесконечно большое время отклика. Ждать придётся не до посинения, а до самых белых слонов.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 27 2008, 00:07
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-06-08
Пользователь №: 38 128

|
Господа, сразу прошу прощения за то, что вмешиваюсь в вашу интеллектуальную беседу. Я студент, проблема мне показалась интересной, поэтому я захотел разобраться, но к сожалению умные люди не пришли к единому мнению, поэтому я полез в матлаб, попробовать озвученные методы.
Сначала сформулирую проблему, которую решал: есть N отсчетов, в которых присутствует синусоида + постоянная составляющая + шум. Период синусоиды заведомо в разы больше N, начальная фаза случайная. Шум -- норм. распределенная случ. величина с нулевым мат. ожиданием.
Я попробовал два озвученных решения: ФНЧ и Станислава. ДПФ и АКФ не смотрел, потому что не понимаю как они здесь помогут.
ФНЧ брал 1й Чебышева. Варьировал все возможные параметры как мог, но не смог добиться того, чтобы на выходе как-то обозначилась искомая величина. Да, выход по времени рассматривал достаточно длинный.
Для реализации метода, предложенного Станиславом взял Curve Fitting toolbox из матлаба. При бесконечном ОСШ он точно выдает искомую величину. В присутствии шума решение начинает гулять. Только надо выставлять область ограничений для решения не бесконечную, иначе минимумов у целевой функции получается несколько.
На все это я потратил 1 час 7 минут.
Вопросы к знающим: 1. как именно вы предлагаете применять фнч? 2. Как здесь можно использовать дпф или акф?
Отдельная просьба: ваше мнение о моих способностях, оставьте при себе.
|
|
|
|
|
Nov 27 2008, 00:23
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(mvb @ Nov 27 2008, 03:07)  Для реализации метода, предложенного Станиславом взял Curve Fitting toolbox из матлаба. При бесконечном ОСШ он точно выдает искомую величину. В присутствии шума решение начинает гулять. Только надо выставлять область ограничений для решения не бесконечную, иначе минимумов у целевой функции получается несколько.
На все это я потратил 1 час 7 минут. Вероятно, Вы неплохо изучили Матлаб, потому, что у меня ушло бы времени больше, хотя работать с ним приходится. Если не трудно, выложите программу, интересно посмотреть. Постараюсь сделать и свою, если время будет. Конечно, оценка в шумах будет гулять. Но она будет, и она будет оптимальной, в каком угодно смысле. Кроме того, в условии о шумах ничего не говорилось. Есть сигнал, нужно определить постоянную составляющую. Формально поставленная задача, имеющая сугубо формальное решение. О ньюансах автор как-то не сообщал. В условиях больших помех сильно может помочь априорное знание хотя бы одного из параметров - амплитуды или фазы гармонического сигнала, например. Впрочем, это банальность. Знание вида функции уже даёт многое. ЗЫ. Кстати, фитнуть можно и не гармонической функцией, а её разложением в ряд. Вероятно, будет менее напряжённо вычислительно.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 27 2008, 04:12
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(mvb) 2. Как здесь можно использовать дпф или акф? ДПФ более-менее точно измеряет частоту/период, когда в блоке находится много периодов. АКФ достаточно два периода. Хотя имея гарантированно два периода частоты можно "ручками" отсканировать блок (свёртками sin/cos) на дробные частоты. 729 кажется знал ещё какой-то хороший метод определения дробных частот. Только он пропал куда-то.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 27 2008, 21:10
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-06-08
Пользователь №: 38 128

|
Вот мой код, без претензий на робастность и скорость: Код clc;
N = 100; % кол-во отсчетов n = 1:N; d = .1; % постоянная составляющая p = rand()*pi; % случайная фаза f = 1/(4*N); % частота (в N отсчетах 1/4 периода) SNR = 40; % ОСШ в дБ
% собсно анализируемые отсчеты s = sin(2*pi*f*n+p) + d + randn(1, N)*(d+sqrt(2))*10^(-SNR/20);
st_ = [ .5 2*pi*f 0 0 ]; fo_ = fitoptions('method','NonlinearLeastSquares','Lower',[0 0 -1.7 -1],'Upper',[5 0.10000000000000001 1.7 0.10000000000000001]); set(fo_,'Startpoint',st_); ft_ = fittype('a*sin(b*x+c)+d',... 'dependent',{'y'},'independent',{'x'},... 'coefficients',{'a', 'b', 'c', 'd'}); cf_ = fit(n',s',ft_,fo_);
a = coeffvalues(cf_);
a(4) Да, у меня тоже была мысль о разложении синуса в ряд, или как-то перейти к полиному Чебышева, но тогда постоянная составляющая будет спрятана в свободном члене полинома, и как ее оттуда вычленить я не знаю. 2GetSmart: ну если в распоряжении есть больше (м.б. больше равно) одного периода, то все становится понятно
|
|
|
|
|
Nov 28 2008, 05:00
|
Знающий
   
Группа: Свой
Сообщений: 552
Регистрация: 29-02-08
Пользователь №: 35 481

|
Цитата(RadioJunior @ Nov 26 2008, 12:11)  Это кризис возраста или врожденный комплекс Наполеона?... Нет. Вы ошибаетесь. Нет никакого кризиса возраста и нет никакого Наполеона. Все оказалось намного банальнее. Цитата(Stanislav @ Nov 27 2008, 00:29)  Можете считать меня ассенизатором.  Если человек потратил жизнь на борьбу с гав..ом. Сами понимаете....
|
|
|
|
|
Nov 28 2008, 06:55
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(mvb @ Nov 28 2008, 00:10)  Вот мой код, без претензий на робастность и скорость: Код .................................. Понятно. Собственно, у меня вышло бы так же. Попробую его "усовершенствовать", когда время будет. Цитата(mvb @ Nov 28 2008, 00:10)  Да, у меня тоже была мысль о разложении синуса в ряд, или как-то перейти к полиному Чебышева, но тогда постоянная составляющая будет спрятана в свободном члене полинома, и как ее оттуда вычленить я не знаю. Тоже подумаю. Цитата(mvb @ Nov 28 2008, 00:10)  2GetSmart: ну если в распоряжении есть больше (м.б. больше равно) одного периода, то все становится понятно А мне вот не совсем понятно, что собирается делать GetSmart, если в его распоряжении будет кусок, заведомо больший только одного периода. Цитата(Михаил_K @ Nov 28 2008, 08:00)  Нет. Вы ошибаетесь. Нет никакого кризиса возраста и нет никакого Наполеона. Все оказалось намного банальнее.
Если человек потратил жизнь на борьбу с гав..ом. Сами понимаете.... Да не потратил ещё. А трачу.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 28 2008, 10:03
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-06-08
Пользователь №: 38 128

|
Если бы у меня был бы фрейм с достаточным количеством отсчетов, я бы сначала попробовал такой способ:
1. Определил бы период синуса (в первом приближении с пом. автоковариационной функции, дальше покопал бы продвинутые методы вычисления спектра)
2. Далее скомпенсировал бы ошибку в ДПФ на 0 частоте от того, что частота синуса не кратна 2*Pi/N Насколько я помню отклик гармонической функции при ДПФ пропорционален sinc, тогда получается что-то вроде этого: модуль постоянной составляющей = ДПФ(0) - sinc(0 - fsin)*ДПФ(fsin) (fsin -- измереная частота синуса)
Наверняка вы найдете здесь ошибки, укажите мне на них пожалуйста!
|
|
|
|
|
Nov 28 2008, 11:45
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(mvb @ Nov 28 2008, 13:03)  Если бы у меня был бы фрейм с достаточным количеством отсчетов, я бы сначала попробовал такой способ:
1. Определил бы период синуса (в первом приближении с пом. автоковариационной функции, дальше покопал бы продвинутые методы вычисления спектра)
2. Далее скомпенсировал бы ошибку в ДПФ на 0 частоте от того, что частота синуса не кратна 2*Pi/N Насколько я помню отклик гармонической функции при ДПФ пропорционален sinc, тогда получается что-то вроде этого: модуль постоянной составляющей = ДПФ(0) - sinc(0 - fsin)*ДПФ(fsin) (fsin -- измереная частота синуса)
Наверняка вы найдете здесь ошибки, укажите мне на них пожалуйста! Щас времени маловато. Вот некоторые соображения: 1. Автоковариационный метод даст большую ошибку в определении частоты, даже если в окне будет несколько периодов. Только по одному периоду, ПМСМ, работать не будет. Собственный простой способ предложу попозже. 2. Не учтена амплитуда гармонического сигнала и его фаза, поэтому ДПФ будет неоднозначной по отношению к этим параметрам. Правда, после оценивания частоты её найти их не так уж сложно. Или я не понял что-то? Впрочем, способ интересный, есть в нём что-то эдакое... ЗЫ. А-а, понял, наконец.  Речь идёт, конечно, о модулях спектра сигнала. Что ж, посмотрю на досуге, действительно стало интересно. Только с фазой, по-моему, всё равно засада... Лучшим же методом считаю, как и в первом случае, использование приближения входного сигнала известной функцией (фиттинг). Правда, здесь ещё подумать надо: возможно, есть более простой и точный способ.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 28 2008, 13:08
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(mvb) 2. Далее скомпенсировал бы ошибку в ДПФ на 0 частоте от того, что частота синуса не кратна 2*Pi/N Насколько я помню отклик гармонической функции при ДПФ пропорционален sinc, тогда получается что-то вроде этого: модуль постоянной составляющей = ДПФ(0) - sinc(0 - fsin)*ДПФ(fsin) (fsin -- измереная частота синуса) Я например многое из этого не понял. ДПФ по какому блоку делается? По одному или по скольки буферам? sinc(0 - fsin)*ДПФ(fsin) что из себя представляет? Это свёртка? Кстати, ДПФ(0) - это простое среднее арифметическое блока. Как бы амплитуда постоянки (0 Гц), которая в отличие от остальных спектральных компонентов даже фазы не имеет. У меня сразу мысли возникают - почему такая дискриминация, ведь все частоты должны быть равноправные? Но это к этой теме отношения не имеет  Да, и забыл совсем Цитата(Stanislav) ...Надеюсь, что попрошайничество на сей раз Вам не поможет снять взыскание... Бред сивой кобылы
Сообщение отредактировал GetSmart - Nov 28 2008, 13:20
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 30 2008, 09:21
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 7-06-08
Пользователь №: 38 128

|
Попробовал на досуге определить период синуса в матлабе через автоковариацию. При вышеописаных условиях получается ошибка порядка 10-15%, чего явно не достаточно. Чем больше периодов умещается в окне, тем меньше относителльная погрешность. Вобщем да, имея один период определить частоту получается плохо.
Станислав: да, под ДПФ(х) я подрузомевал модуль, извините, за то что так криво написал. На самом деле под ДПФ(fsin) я имел ввиду просто амплитуду синусоиды, из ДПФ ее вычленить наверное не получится...
GetSmart: sinc(0 - fsin)*ДПФ(fsin) -- нет, это просто sinc, умноженный на амплитуду синусоиды. Модуль ДПФ(0) строго равен среднему арифметическому, аргумент же строго равен нулю. Все просто: вычисляется скалярное произведение сигнала с комплексной экспонентной от нуля -- ДПФ(0) = <s, exp(j*0)>/N exp(j*0) = 1 Т.о. получается что действительная часть ДПФ(0) равна просто сумме сигнала деленного на N, а мнимая нулю.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|