реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Офлафн оценка скорости по дискретным отсчетам, Какие есть методы?
RHnd
сообщение Aug 15 2013, 20:43
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Исходные данные - есть дискретные квантованные отсчеты некоторого сигнала. Мы знаем, что этот сигнал - выход некоторой механической системы, т.е. как минимум дважды дифференцируем. Более того, если надо, то мы можем априорно предположить некоторые ограничения на первую и вторую производные. Уровень квантования сигнала достаточно маленький по сравнению с диапазоном изменений сигнала. Частота дискретизации достаточно велика по сравнению со скоростью самого процесса. Скажем, дискретизация 1кГц при том, что в составе сигнала нет существенных компонент с частотами выше 50Гц.
Записанный процесс достаточно длинный - несколько сотен тысяч отсчетов, сигнал имеет совершенно произвольную форму (с учетом дифференцируемости), но преобладают низкие частоты.

Задача - как по имеющимся отсчетам оценить скорость? Какие есть оффлайновые методы? Если кто-то сможет дать ссылку на какой-то перечень или обзор, то было бы здорово. Рабочая среда - матлаб.

Я бы решал задачу так - прорядил бы отсчеты, взяв, например, каждый 20-й. Полученные отсчеты описал бы каким-то сплайном, а затем по найденному сплайну вычисли бы значения производной во всех исходных точках. Плюс - в матлабе это делается в две строчки, и если исходный сигнал достаточно гладкий, то получается приемлемая точность. Но при таком методе есть недостаток - выпадают промежуточные, прореженные точки, т.е. часть информации пренебрегается. Кто как решает, на какие методы стоит посмотреть?
Go to the top of the page
 
+Quote Post
_pv
сообщение Aug 15 2013, 20:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



тогда сразу натягивать на все точки кубический сплайн со сглаживанием, это когда натягивается новая сетка, на этой сетке как и в обычном сплайне строятся полиномы 3й степени, с теми же неприрывностями производных, только наименьшими квадратами по исходным данным и только в наименьших квадратах еще квадрат второй производной добавляется, чтобы резко не менялся.
а зачем вообще там сплайны? считайте скорость да фильтруйте
Go to the top of the page
 
+Quote Post
RHnd
сообщение Aug 15 2013, 22:09
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



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

А что вы имеете ввиду "считайте скорость и фильтруйте"? Вопрос - как именно считать и как фильтровать?

Дополню:
Так как квантование все-таки есть, то обработка экспериментальных (как и модельных) данных показывает - брать каждый отсчет даже для сглаживающего сплайна - нехорошо. Допустим, у нас некоторая небольшая постоянная скорость. Исходный сигнал представляет из себя, соответственно. прямую. Однако из-за квантования он выглядит как пять точек на одном уровне, ступенька, пять точек на следующему уровне, ступенька, и так далее. Если все точки использовать для сглаживающего сплайна, то он будет стремиться минимизировать расстояние до всех точек и аппроксимирующая кривая будет так же похожа на ступеньки, только сглаженные. В результате оценка производной по такой кривой весьма паршивая. Если же прорядить исходный сигнал и построить сглаживающий сплайн по каждому k-ому отсчету, то это затруднение исчезает при хорошем выборе k.

Еще дополнительно: Разобрался, что проблема может быть решена выбором настраиваемого параметра при сглаживающей интерполяции. Т.е., почти такая же такая же степень свободы, как и шаг прореживания, разве что шаг можно (при большом желании) выбрать неравномерным. Есть ли какие-то рекомендации по выбору параметра в сглаживании сплайном, кроме как пробовать и смотреть?
Go to the top of the page
 
+Quote Post
_pv
сообщение Aug 16 2013, 06:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(RHnd @ Aug 16 2013, 05:09) *
А что вы имеете ввиду "считайте скорость и фильтруйте"? Вопрос - как именно считать и как фильтровать?

Y'[i] = (Y[i]-Y[i-1]) / (X[i]-X[i-1])
а дальше любой ФНЧ, z = z + (y-z)/K


Go to the top of the page
 
+Quote Post
RHnd
сообщение Aug 16 2013, 06:25
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Это работало бы, если бы пренебрежимо малое квантование. А так после вычисления первой разности мы получим чудовищно зашумленный сигналы, до уровня непригодности. А дальнейшая фильтровка приведет к существенной задержке.
И это не оффлайн метод. sm.gif
Go to the top of the page
 
+Quote Post
thermit
сообщение Aug 16 2013, 16:11
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Сначала ФНЧ, затем дифференцировать. ФНЧ ограничит полосу и не даст развалиться дифференцированию.

ps
Естественно, без прореживания. Прореживание без фильтрации смысла не имеет в данном случае.

Сообщение отредактировал thermit - Aug 16 2013, 16:15
Go to the top of the page
 
+Quote Post
RHnd
сообщение Aug 16 2013, 16:33
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Использование ФНЧ приведет к появлению задержки, что, естественно, нежелательно. Конечно, я могу пропустить сигнал через фильтр типа s/(a*s+1) или аналогичный, но смысл? Это никаким образом не использует того, что у нас уже есть все отсчеты и что мы работаем оффлайн и можем себе позволить трудоемкие вычисления.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Aug 16 2013, 17:03
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Если Вы работаете offline, то что Вам до задержки. Она фиксирована и строго определена фильтром.
Go to the top of the page
 
+Quote Post
_pv
сообщение Aug 16 2013, 17:05
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата
Сначала ФНЧ, затем дифференцировать. ФНЧ ограничит полосу и не даст развалиться дифференцированию.
операции линейные, от смены очерёдности результат никак не поменяется.
Цитата( @ Aug 16 2013, 22:33) *
Использование ФНЧ приведет к появлению задержки, что, естественно, нежелательно. Конечно, я могу пропустить сигнал через фильтр типа s/(a*s+1) или аналогичный, но смысл? Это никаким образом не использует того, что у нас уже есть все отсчеты и что мы работаем оффлайн и можем себе позволить трудоемкие вычисления.

сделайте КИХ фильтр (у него ФЧХ линейная), сдвинув его на пол длинны, никакой задержки не будет.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Aug 16 2013, 17:10
Сообщение #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, но результат по качеству весьм далек от сглаживающего сплайна с хорошо выбранным коэффициентом сглаживания или с прореживанием.
Go to the top of the page
 
+Quote Post
thermit
сообщение Aug 16 2013, 20:16
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
_pv:
операции линейные, от смены очерёдности результат никак не поменяется.


да об чем речь? Конечно не поменяется. Но тут хотят прореживать/интерполировать/дифференцировать. Дык этот подход есть есть лажа.


Цитата
RHnd:
Сдвинув его на половину длины чего? Простите, я вас не понимаю. UPD: Ага, кажется понял на счет сдвига на половину и устранение задержки. Какую форму фильтра стоит выбрать?



На половину длины импульсной х-ки фильтра. Форма никакой роли не играет (если речь идет о фнч)
Go to the top of the page
 
+Quote Post
RHnd
сообщение Aug 16 2013, 21:57
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(thermit @ Aug 17 2013, 00:16) *
Но тут хотят прореживать/интерполировать/дифференцировать. Дык этот подход есть есть лажа.

Почему?

Цитата(thermit @ Aug 17 2013, 00:16) *
Форма никакой роли не играет (если речь идет о фнч)

Под формой я имею ввиду форму АЧХ фильтра. Как так роли не играет... я, конечно, в ЦОС не особо, не моя тематика, но эксперименты показывают, что очень даже играет. На сколько я понимаю, АЧХ в полосе пропускания должна быть как можно ближе к единице и все отклонения будут сказываться.
Скажите, пожалуйста, что именно вы имеете ввиду, когда говорите "дифференцировать" применительно к задаче? Просто первая разность?


Вспомнил, что в матлабе есть такая замечательная функция filtfilt! Можно обойтись без КИХ фильтров, использовать БИХ. Вроде, результат должен стать получше.

Go to the top of the page
 
+Quote Post
_pv
сообщение Aug 17 2013, 07:37
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(RHnd @ Aug 17 2013, 03:57) *
Вспомнил, что в матлабе есть такая замечательная функция filtfilt! Можно обойтись без КИХ фильтров, использовать БИХ. Вроде, результат должен стать получше.

у БИХ фазовая характеристика не линейная, соответственно задержки будут не постоянны, как в случае с КИХ, а будут зависеть от формы сигнала.
Go to the top of the page
 
+Quote Post
RHnd
сообщение Aug 17 2013, 08:29
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997



Цитата(_pv @ Aug 17 2013, 11:37) *
у БИХ фазовая характеристика не линейная, соответственно задержки будут не постоянны, как в случае с КИХ, а будут зависеть от формы сигнала.

На сколько я понимаю, именно это и компенсируется функцией filtfilt. Разве нет?
Go to the top of the page
 
+Quote Post
thermit
сообщение Aug 17 2013, 09:38
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
RHnd:
Почему?


Да зачем прореживать, чтобы потом интерполировать? Тем более, сплайном.
Оставляем сигнал на исходной частоте дискретизации, обрабатываем фнч с полосой равной полосе полезного сигнала (тем самым уменьшаем мощность шума) и потом обрабатываем ких с их [0.5 -0.5]. Чх такого фильтра близка к х-ке дифференциатора вблизи 0. Если сигнал проредить, придется использовать широкополосный дифференциатор.

Если обработка оффлайн, можно использовать бих фнч, но с 2-й фильтрацией сигнала (после 1-ой фильтрации сигнал фильтруется еще раз задом на перед). Фаза сигнала после такой фильтрации не изменится, но будет квадрат ачх. Матлабский аналог filtfilt.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01503 секунд с 7
ELECTRONIX ©2004-2016