Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтрация сигнала, релизация свертки 
:(
    Опции темы
PostEr
Дата 23.7.2003, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



Кто-нибудь реализовывал какой-либо алгоритм фильтрации псевдо-случайного сигнала?

Я вот реализовал и мучаюсь smile.gif Может кто по-лучше знает метод?


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
Step
Дата 23.7.2003, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: нет
Всего: 25



а какой у тебя метод


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
PostEr
Дата 23.7.2003, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



А у меня такой метод...

Я не знаю как называется и кем придуман, но знаю что он имеет название.
В массив загоняются последовательно результаты считывания, и по окончании заполнения массива происходит суммирование всех величин таким образом for (i=0;i<max;i++)tt+=a[i]*exp((i+1)/max-1), потом tt = tt / max; и значения массива "сдвигаются" и в конец добавляется последнее считанное значение и т.д.
...
Можно без экспоненты


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
SCHEPA
Дата 26.7.2003, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 7.6.2003
Где: Н.Н.

Репутация: нет
Всего: нет



Вопрос в том, что ты хочешь получить?

А метод если без экспоненты, то классическое мат. ожидание.
--------------------
Так что в лучших книгах всегда нет имен...
PM MAIL   Вверх
PostEr
Дата 26.7.2003, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



Понятное дело. А если фильтровать периодичные величины? Например градусы.

Если я перехожу от 2* к 359* , то я вовсе не сдвигаюсь на 357*, а сдвигаюсь на 3* но против часовой стрелки. Как сделать, чтобы алгоритм это "понимал", а то такой "кривой" поворот получается smile.gif

Я пробовал делать условие: if (a[i]-a[i-1]>180)a[i]-=360; , но как-то оно странно работает


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
SCHEPA
Дата 27.7.2003, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 7.6.2003
Где: Н.Н.

Репутация: нет
Всего: нет



Вообще, переход через ноль - самое больное место при обработке периодического сигнала. Не ты первый с этим мучаешься.

Цитата

Я пробовал делать условие: if (a[i]-a[i-1]>180)a[i]-=360;  ,  но как-то оно странно работает


А как странно?
--------------------
Так что в лучших книгах всегда нет имен...
PM MAIL   Вверх
PostEr
Дата 27.7.2003, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



НИКАК! Может я где-то что-то забываю, а у меня сигнал постоянно одинаковый и без фильтрации sad.gif


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
SCHEPA
Дата 28.7.2003, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 7.6.2003
Где: Н.Н.

Репутация: нет
Всего: нет



пиши подробнее если нужна помощь. А так сложно разобраться.
--------------------
Так что в лучших книгах всегда нет имен...
PM MAIL   Вверх
PostEr
Дата 30.7.2003, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



Может, надо ещё елсе дописать? Вся проблема заключается в том, что при повороте "налево", то есть при изменении входного значения с 0* на 359* происходит поворот по большому кругу, то есть происходит плавный поворот: 0, 5, 15, 40, 100, 250, 359.... sad.gif Заколебался уже


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
podval
Дата 31.7.2003, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



PostEr
По-моему, ты делаешь свертку.
Для того, чтобы правильно "поворачивать" градусы, их совсем необязательно "вертеть". Перед выполнением свертки заполни вспомогательный массив, где с нужной тебе дискретностью будут записаны значения тех самых экспонент на интервале от 0 до двух "пи". А в цикле свертки просто умножай на значения соответствующих элементов этого массива.
PM WWW ICQ   Вверх
podval
Дата 31.7.2003, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: 18
Всего: 62



Еще одна подсказка.

Convolution(x,y) = IFFT(FFT(x)*conj(FFT(y)))

FFT - прямое пряобразование Фурье
IFFT - обратное
conj(A) - комплексно-сопряженное А
PM WWW ICQ   Вверх
PostEr
Дата 31.7.2003, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



А чё такое преобразование Фурье? smile.gif

Что такое "свёртка"


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
SCHEPA
Дата 31.7.2003, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 7.6.2003
Где: Н.Н.

Репутация: нет
Всего: нет



Преобразование Фурье - разложение функции в ряд по гармоническим функциям (sin, cos).

Свертка операция вида:

z=Sum(x(i)*y(N-i)), i=0...N, Sum - операция накопления

2Poster: не-а, не свертку. По-моему, умножение на экспоненту - это весовая обработка, то есть последний принятый элемент у него участвует в формировании результата с наибольшим весом.
--------------------
Так что в лучших книгах всегда нет имен...
PM MAIL   Вверх
PostEr
Дата 1.8.2003, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



Умножение на экспоненту - действительно весовая обработка. Её можно было сделать линейной(вместо экспоненциальной), можно было сделать практически любой.

Какое вообще отношение Фурье имеет к этой задаче? smile.gif Получается, что мне нужно различать стороны поворота и различать знак, когда это нужно. То есть если я кручусь влево от 0*, то должно быть -1* -2* и т.д., если вправо, то просто прибавляться: 358* 359* 360* 365* и т.д. smile.gif Вроде так. Но проблема в том, что у меня невозможно (?) реализовать это.

Мне необходимо брать угол поврота с сельсинного датчика. Для этого я использую два сопряжённых круговых потенциометра, смещённых друг относительно друга на "зону нечувствительности", которая равна 30*. Для снятия параметров я использую АЦП, а точнее только 2 канала АЦП - соответственно первый и второй потенциометр. Характеристика каждого потенциометра U(alpha) пилообразна, но засчёт использования сопряжения и переключения между каналами мы получаем неразрывную прямую (?). Вроде всё так... ТАК! Дошло. Проблема в том, чо при повороте второго потенциометра в "обрыв" мы переключаемся на первый, на котором скажем 0*, а нам надо ещё к этому нулю добавлять "накрутку" первого!!!!!!!!!!!!!!!! ЭВРИКА!! smile.gif Всем спасибо, буду пробовать smile.gif


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.