Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисление постоянной состовляющей 
:(
    Опции темы
goodday1941
Дата 15.9.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



Вряд ли мне кто поможет, но вдруг smile

в общем ситуация такая с некоего абстрактного прибора(к примеру через USB) я постоянно получаю цифровой сигнал изменяющийся во времени (допустим по гармоническому закону) и у этого сигнала есть постоянная состовляющая (которая слегка плавает во времени)... собственно вопрос в следующем... как вычеслить значение постоянной состовляющей принимаемого цифрового сигнала?

Буду благодарен за любую ссылку по данному вопросу, заранее СПАСИБО smile


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Akina
Дата 15.9.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(goodday1941 @  15.9.2008,  14:31 Найти цитируемый пост)
постоянная состовляющая (которая слегка плавает во времени)... 

Если она плавает - она НЕ постоянная.
А вообще вариантов масса - от построения уравнения регрессии с константой до тупого взятия за постоянку минимального значения.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
goodday1941
Дата 15.9.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



надеюсь Вы понимаете что в реальных приборах ничего постоянного нету... не будут же в таком случае постоянную состовляющую называть "почти постоянная состовляющая" smile я думаю что должны присутствовать мат решения которые учитывают это...

взятия минимального значения за ПС вроде как не правильно (ессесно могу ошибаться давно с матиматикой не имел дело)... в моем понимании скорее среднего значения (там проинтегрировать да разделить на длинну, но этот вариант не учитывает что уровень ПС может изменится)....

постоения уравнения регрессии с константой - это я пока не знаю (а возможно просто не помню) smile сейчас погуглю...

Это сообщение отредактировал(а) goodday1941 - 15.9.2008, 14:13


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 15.9.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



появилась мысль... перегнать все через преобразование фурье в частотную область, потом отфильтровать, и перегнать снова во временную область... бр... кто что может сказать по этому поводу... помоему слишком трудоемко (комп будет прозревать  smile )


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
ksili
Дата 15.9.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

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



Насколько вообще важна точность определения ПС? Если основной сигнал гармонический и точность должна быть не супер-пупер, то я бы брал среднее значение за последние пару-тройку периодов (так будет учитываться изменение ПС)

Добавлено через 1 минуту и 25 секунд
Да в принципе и не обязательно если гармонический, для любого периодического подойдёт


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
maxim1000
Дата 15.9.2008, 17:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



ну если плавает, значит не постоянная, а низкочастотная
и выделять её действительно, стоит фильтром, ослабляющим высокие частоты
только в Фурье я бы фильтровать не советовал: операции, которые там кажутся простыми и хорошими (например, обнуление спектра на частотах выше какого-то порога) могут приводить к очень некрасивым последствиям во временной области

Добавлено через 1 минуту и 39 секунд
Цитата(goodday1941 @  15.9.2008,  14:09 Найти цитируемый пост)
там проинтегрировать да разделить на длинну, но этот вариант не учитывает что уровень ПС может изменится

можно брать последние n секунд и вычислять среднее по ним - получится скользящее среднее


--------------------
qqq
PM WWW   Вверх
goodday1941
Дата 15.9.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



вообще что б отойти от абстрактного сигнала, скажу так сигнал - кардиограмма человека

Добавлено @ 17:50
точность важна

Добавлено @ 18:00
Цитата(maxim1000 @  15.9.2008,  17:35 Найти цитируемый пост)
ну если плавает, значит не постоянная, а низкочастотная
и выделять её действительно, стоит фильтром, ослабляющим высокие частоты
только в Фурье я бы фильтровать не советовал: операции, которые там кажутся простыми и хорошими (например, обнуление спектра на частотах выше какого-то порога) могут приводить к очень некрасивым последствиям во временной области

предлагаем другой вариант... это было первое что пришло в голову smile... конечно бока я примерно вижу.. сигнал у нас конечный, в результате имеем бесконечный спектр, после обрезания спектра ситуация меняется ... сигнал бесконечный, спектр конечный... эффект Гиббса походу тоже имеет место быть

Это сообщение отредактировал(а) goodday1941 - 15.9.2008, 18:09


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 15.9.2008, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



Цитата(maxim1000 @  15.9.2008,  17:35 Найти цитируемый пост)
можно брать последние n секунд и вычислять среднее по ним - получится скользящее среднее

это вариант... но думаю что он может и не пройти.. но так как он самый простой наверное начну с него smile... но тут тяжело будет определить период... вот какой период сердцебиения человека? smile


Это сообщение отредактировал(а) goodday1941 - 15.9.2008, 18:16


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
maxim1000
Дата 15.9.2008, 21:23 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(goodday1941 @  15.9.2008,  18:15 Найти цитируемый пост)
это вариант... но думаю что он может и не пройти.. но так как он самый простой наверное начну с него smile... но тут тяжело будет определить период... вот какой период сердцебиения человека? smile

а размер интервала, на котором интегрируется, необязательно должен быть равен периоду
достаточно, чтобы он был достаточно длиным
это, конечно, приведёт к некоторым колебаниям, но их амплитуда будет обратно пропорциональна размеру интервала, так что увеличивая его можно будет уменьшать погрешность
однако, тогда будет возрастать запаздывание реакции на изменения этой составляющей

здесь есть некоторое подобие принципа неопределённости - точность измерения по времени и по значению конфликтуют между собой 

более точный вариант - использовать особенности сигнала
например, действительно, выделить периоды и обозначить в них какие-то характерные точки (всплески, например) и усредняя значения сигнала в них отслеживать изменения сдвига


--------------------
qqq
PM WWW   Вверх
ksili
Дата 16.9.2008, 07:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

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



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

2) возможно спектр вам и так понадобится в дальнейшем (я например имел дело с энцефалограммами и там вроде выявление некоторых заболеваний делалось на основе знания о спектре или наличия каких-то частот). Тогда в вычисленном спектре самая младшая гармоника и будет этой "почти постоянной составляющей"


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
goodday1941
Дата 16.9.2008, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



Цитата(ksili @  16.9.2008,  07:10 Найти цитируемый пост)
2) возможно спектр вам и так понадобится в дальнейшем (я например имел дело с энцефалограммами и там вроде выявление некоторых заболеваний делалось на основе знания о спектре или наличия каких-то частот). Тогда в вычисленном спектре самая младшая гармоника и будет этой "почти постоянной составляющей" 


спектр понадобится 100%
собсно в задумке как раз и определят всякие болезни по кардиограмме человека smile

думаю да пару тройка нижних гармоник и я избавлюсь от постоянной состовляющей... тут просто интерестно как это повлияет в конечном итоге на кардиограмму...

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



--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 16.9.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



вот нашел... буду пробвать


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
W4FhLF
Дата 17.9.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

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



Могу предложить два варианта.

1. АКФ.

2. Метод главных компонент. С помощью этого метода можно выделить компоненты, вносящие наибольший вклад в дисперсию исходного сигнала. После чего восстановить сигнал только на этих компонентах и вычесть его из исходного. Такой метод применяется мной для выделения региональной составляющей геомагнитного и гравитационного полей, т.о. оставляя только локальную составляющую. 

Это сообщение отредактировал(а) W4FhLF - 17.9.2008, 11:26


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
DRUID3
Дата 23.9.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2W4FhLF
ну Вы, блин, даете.

Цитата(maxim1000 @  15.9.2008,  16:35 Найти цитируемый пост)
ну если плавает, значит не постоянная, а низкочастотная
и выделять её действительно, стоит фильтром, ослабляющим высокие частоты
только в Фурье я бы фильтровать не советовал: операции, которые там кажутся простыми и хорошими (например, обнуление спектра на частотах выше какого-то порога) могут приводить к очень некрасивым последствиям во временной области

вообще все верно, но... но это же простой кардиограф, а не численные методы в актуальных вопросах квантовой теории гравитации))).
 правило простое - резкий перепад во времннОй области даст sinc(x)-подобные осциляции в частотной и наоборот. Это стоит учитывать в очень многих ситуациях, но все-таки данный случай как теормех при строительстве собачьей конурки. 

2goodday1941
Это Вам по учебе или рабочее задание дали?
 smile У меня прямь ностальгия. Тоже делал когда-то кардиограф(только программу) на AVR(8-и битный микроконтроллер) smile  smile . У меня он делал FFT и rFFT у себя "на борту" и по UART бросал результаты в комп. При частоте сэмплирования в 50 Hz он успевал все "лЁХко". Причем FFT, как и Вы я искал готовое, но тогда в инте было намного меньше рабочих исходников(тем более для fixpoint) и я не нашел. Разочаровавшись в жизни я купил книжку за 100 с хреном гривень, где был, типо FFT и... и там, блин. он был с опечатками. Ёпрст... Пришлось надолго углубиться в глубины-глубин и я написал свое FFT... и мне понравилось!  smile Так и остался в области DSP. Где тут смайл - ностальгически плакать??? smile 
 Так вот далее по-делу:
 Вы вполне правильно мыслите - обнуление FFT коэффициентов это ни что иное как блочный метод FIR фильтрации(есть еще собственно FIFO метод - т.е. на основе кольцевого буфера). Просто дабы избежать всяких там эффектов Гибса высоколобые ученные мужи рекомендуют не полностью обнулять, а в соответствии с FFT нужной Вам импульсной характеристики. Но не заморачивайтесь. это не тот случай. И это, я так понимаю, Вы хотите так убрать дыхание оставив только пульс(работу сердечной системы). Ну вполне логично, так и делают.
 Еще совет - который я в свое время воплотить не успел - попробуйте сделать быстрое вейвлет-преобразование (оно отнимает очень мало ресурсов и тривиально само по себе, только вейвлет надо подобрать). Там и Гибса не будет и если систему думают автоматизировать - намного точнее будет диагностика. Но это так, мысли в слух.

 еще вопрос по технологиям - ну USB понятно, сейчас редкий ноут имеет COM, а почему java-программисту дали такое задание? Нет, все конечно работать будет, но забавная система. А датчик у Вас какой? А контроллер? И что делает контроллер, просто буферизирует? 


--------------------
Every time if you use Linux, you are joined to the communism...
практика - критерий истины ... отделенной от нас пропастью субъективного восприятия...
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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