|
|
  |
Офлафн оценка скорости по дискретным отсчетам, Какие есть методы? |
|
|
|
Aug 15 2013, 20:43
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Исходные данные - есть дискретные квантованные отсчеты некоторого сигнала. Мы знаем, что этот сигнал - выход некоторой механической системы, т.е. как минимум дважды дифференцируем. Более того, если надо, то мы можем априорно предположить некоторые ограничения на первую и вторую производные. Уровень квантования сигнала достаточно маленький по сравнению с диапазоном изменений сигнала. Частота дискретизации достаточно велика по сравнению со скоростью самого процесса. Скажем, дискретизация 1кГц при том, что в составе сигнала нет существенных компонент с частотами выше 50Гц. Записанный процесс достаточно длинный - несколько сотен тысяч отсчетов, сигнал имеет совершенно произвольную форму (с учетом дифференцируемости), но преобладают низкие частоты.
Задача - как по имеющимся отсчетам оценить скорость? Какие есть оффлайновые методы? Если кто-то сможет дать ссылку на какой-то перечень или обзор, то было бы здорово. Рабочая среда - матлаб.
Я бы решал задачу так - прорядил бы отсчеты, взяв, например, каждый 20-й. Полученные отсчеты описал бы каким-то сплайном, а затем по найденному сплайну вычисли бы значения производной во всех исходных точках. Плюс - в матлабе это делается в две строчки, и если исходный сигнал достаточно гладкий, то получается приемлемая точность. Но при таком методе есть недостаток - выпадают промежуточные, прореженные точки, т.е. часть информации пренебрегается. Кто как решает, на какие методы стоит посмотреть?
|
|
|
|
|
Aug 15 2013, 22:09
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Спасибо за наводку на сглаживающий сплайн. Не очень понял, что вы имеете ввиду под "натягиванием новой сетки", но попробую разобраться.
А что вы имеете ввиду "считайте скорость и фильтруйте"? Вопрос - как именно считать и как фильтровать?
Дополню: Так как квантование все-таки есть, то обработка экспериментальных (как и модельных) данных показывает - брать каждый отсчет даже для сглаживающего сплайна - нехорошо. Допустим, у нас некоторая небольшая постоянная скорость. Исходный сигнал представляет из себя, соответственно. прямую. Однако из-за квантования он выглядит как пять точек на одном уровне, ступенька, пять точек на следующему уровне, ступенька, и так далее. Если все точки использовать для сглаживающего сплайна, то он будет стремиться минимизировать расстояние до всех точек и аппроксимирующая кривая будет так же похожа на ступеньки, только сглаженные. В результате оценка производной по такой кривой весьма паршивая. Если же прорядить исходный сигнал и построить сглаживающий сплайн по каждому k-ому отсчету, то это затруднение исчезает при хорошем выборе k.
Еще дополнительно: Разобрался, что проблема может быть решена выбором настраиваемого параметра при сглаживающей интерполяции. Т.е., почти такая же такая же степень свободы, как и шаг прореживания, разве что шаг можно (при большом желании) выбрать неравномерным. Есть ли какие-то рекомендации по выбору параметра в сглаживании сплайном, кроме как пробовать и смотреть?
|
|
|
|
|
Aug 16 2013, 17:05
|
Гуру
     
Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954

|
Цитата Сначала ФНЧ, затем дифференцировать. ФНЧ ограничит полосу и не даст развалиться дифференцированию. операции линейные, от смены очерёдности результат никак не поменяется. Цитата( @ Aug 16 2013, 22:33)  Использование ФНЧ приведет к появлению задержки, что, естественно, нежелательно. Конечно, я могу пропустить сигнал через фильтр типа s/(a*s+1) или аналогичный, но смысл? Это никаким образом не использует того, что у нас уже есть все отсчеты и что мы работаем оффлайн и можем себе позволить трудоемкие вычисления. сделайте КИХ фильтр (у него ФЧХ линейная), сдвинув его на пол длинны, никакой задержки не будет.
|
|
|
|
|
Aug 16 2013, 17:10
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(Alex11 @ Aug 16 2013, 21:03)  Если Вы работаете offline, то что Вам до задержки. Она фиксирована и строго определена фильтром. Простите, какая задержка фиксирована и строго определна фильтром, если мы говорим о произвольной глакой форме сигнала? UPD. Простите, понял. Вы тоже про КИХ говорили? Цитата(_pv @ Aug 16 2013, 21:05)  сделайте КИХ фильтр (у него ФЧХ линейная), сдвинув его на пол длинны, никакой задержки не будет. Сдвинув его на половину длины чего? Простите, я вас не понимаю. UPD: Ага, кажется понял на счет сдвига на половину и устранение задержки. Какую форму фильтра стоит выбрать? Я сейчас поэкспериментировал с различными дифференциаторами, которые мне Matlab fdatool считает, дошел до порядка 300, но результат по качеству весьм далек от сглаживающего сплайна с хорошо выбранным коэффициентом сглаживания или с прореживанием.
|
|
|
|
|
Aug 16 2013, 20:16
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата _pv: операции линейные, от смены очерёдности результат никак не поменяется. да об чем речь? Конечно не поменяется. Но тут хотят прореживать/интерполировать/дифференцировать. Дык этот подход есть есть лажа. Цитата RHnd: Сдвинув его на половину длины чего? Простите, я вас не понимаю. UPD: Ага, кажется понял на счет сдвига на половину и устранение задержки. Какую форму фильтра стоит выбрать? На половину длины импульсной х-ки фильтра. Форма никакой роли не играет (если речь идет о фнч)
|
|
|
|
|
Aug 16 2013, 21:57
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Цитата(thermit @ Aug 17 2013, 00:16)  Но тут хотят прореживать/интерполировать/дифференцировать. Дык этот подход есть есть лажа. Почему? Цитата(thermit @ Aug 17 2013, 00:16)  Форма никакой роли не играет (если речь идет о фнч) Под формой я имею ввиду форму АЧХ фильтра. Как так роли не играет... я, конечно, в ЦОС не особо, не моя тематика, но эксперименты показывают, что очень даже играет. На сколько я понимаю, АЧХ в полосе пропускания должна быть как можно ближе к единице и все отклонения будут сказываться. Скажите, пожалуйста, что именно вы имеете ввиду, когда говорите "дифференцировать" применительно к задаче? Просто первая разность? Вспомнил, что в матлабе есть такая замечательная функция filtfilt! Можно обойтись без КИХ фильтров, использовать БИХ. Вроде, результат должен стать получше.
|
|
|
|
|
Aug 17 2013, 09:38
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата RHnd: Почему? Да зачем прореживать, чтобы потом интерполировать? Тем более, сплайном. Оставляем сигнал на исходной частоте дискретизации, обрабатываем фнч с полосой равной полосе полезного сигнала (тем самым уменьшаем мощность шума) и потом обрабатываем ких с их [0.5 -0.5]. Чх такого фильтра близка к х-ке дифференциатора вблизи 0. Если сигнал проредить, придется использовать широкополосный дифференциатор. Если обработка оффлайн, можно использовать бих фнч, но с 2-й фильтрацией сигнала (после 1-ой фильтрации сигнал фильтруется еще раз задом на перед). Фаза сигнала после такой фильтрации не изменится, но будет квадрат ачх. Матлабский аналог filtfilt.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|