Перейти к содержанию
    

Обработка экспериментальных данных

Здравствуйте, специалисты по цифровой обработке сигналов

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

 

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

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

 

Периоды последовательностей в общем случае не известны, съём сигнала идёт с определённым временным шагом.

 

На иллюстрациях красным обозначено то, что надо найти, стрелки указывают на ось абсцисс, линии на ось ординат

 

Иллюстрации

BTI_coarse1.bmp

BTO_coarse1.bmp

BTR_coarse1.bmp

kMaxIn1.bmp

kMaxOut1.bmp

BTR_fine1.bmp

Изменено пользователем Lyubimov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте, специалисты по цифровой обработке сигналов

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

 

Для начала определитесь, что именно вам нужно: обработать сигнал эксперимента, или обработать сигнал в реальном времени, выделив начало заранее неизвестной последовательности? Если обработка эксперимента, как написано в теме - то начало можно выделить легко, в обратном времени, рассматривая последовательность задом наперед и выделив период сначала по большим импульсам.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала определитесь, что именно вам нужно: обработать сигнал эксперимента, или обработать сигнал в реальном времени, выделив начало заранее неизвестной последовательности? Если обработка эксперимента, как написано в теме - то начало можно выделить легко, в обратном времени, рассматривая последовательность задом наперед и выделив период сначала по большим импульсам.

Данные обрабатываются не в реальном времени.

А какие методы используются для определения периода сигнала?

И как можно избавиться от шума, если есть возможность получить шумовую последовательность?

 

Я вначале просто хотел продифференцировать сигнал, а потом выделить найти максимумы, но похоже это неправильно.

 

Тоесть получается последовательность действий следующая:

1. Каким-либо образом избавиться от шума

2. Каким-либо образом найти период последовательности

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Каким-либо образом избавиться от шума

2. Каким-либо образом найти период последовательности

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

 

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

 

Дифференцирование усилиивает шум, с вашим шумом на некоторых графиках оно не поможет.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

честно говоря первое что пришло в голову- это фильтрация по скорости нарастания:

если модуль разности in - in[i-1] больше заданной величины, то out = in. иначе out = in[i-1].

но я не специалист по ЦОС :)

Для того, чтобы заинтересовать больше людей, можете выложить данные в каком-нибудь популярном формате, который легко втянуть в матлаб, например. Мне больше всего CSV нравится, хоть в ексель, хоть в матлаб, хоть текстовым редактором посмотреть можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CSV, это данные в кавычках, разделённые запятыми? В принципе не проблема сделать такую таблицу

 

Спасибо, буду пробовать синтезировать НЧ фильтр

 

А как-нибудь можно просто вычесть шумы, если знаешь его амплитуду и частоту съёма сигнала?

 

Пока мне не понятно как построить нелинейную модель и как определить точки переходов

Посоветуйте, пожалуйста, литературу, где описаны приёмы для подобных задач

Изменено пользователем Lyubimov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CSV, это данные в кавычках, разделённые запятыми? В принципе не проблема сделать такую таблицу

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

1,2,3,4,6.4,55.9,222.1,20,3.8e-9,17

например, ексель такое и читать умеет и генерить такие файлы из любого своего формата.

очень классный формат если не знаете кто потребитель данных или нет четких указаний на формат. всегда легко конвертируется во что попало. :)

собственно первоисточник:

Common Format and MIME Type for Comma-Separated Values (CSV) Files (RFC 4180)

 

А про остальное не скажу, потому что не знаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

А возможно использовать автокорреляцию для выявления периода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Ну, зря вы так. с данными иногда интересно поиграться. Вдруг у кого-то из профи найдется лишняя минутка и они просто походя решат вашу проблему. Игры-то тут очень простые, если данные есть и знаешь или догадываешься где копать. Я ( но я не профи в ЦОС) бы например тоже с удовольствием покрутил хоть на пример изучения матаппарата на конкретной задаче.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, зря вы так. с данными иногда интересно поиграться. Вдруг у кого-то из профи найдется лишняя минутка и они просто походя решат вашу проблему. Игры-то тут очень простые, если данные есть и знаешь или догадываешься где копать. Я ( но я не профи в ЦОС) бы например тоже с удовольствием покрутил хоть на пример изучения матаппарата на конкретной задаче.

А сколько примерно отчётов надо? Я обычно 999 делал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала определитесь, что именно вам нужно: обработать сигнал эксперимента, или обработать сигнал в реальном времени, выделив начало заранее неизвестной последовательности?
Олдринг, зачем расползаться мыслию по древу? Вам предоставлены данные эксперимента; скажите, вы получили их в реальном времени или нет?

Что вы вообще подразумеваете под "реальным временем"?

 

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

 

Дифференцирование усилиивает шум, с вашим шумом на некоторых графиках оно не поможет.

 

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

Бред.

 

..............................

Уважаемый Lyubimov.

Неплохо бы выкладывать картинки в пожатом формате. Хотяб освойте png, если с потерями ужимать неохота.

Задачу вашу решим, будьте в надёже. Только сформулировать её попробуйте строже и понятнее для непосвящённых.

Для начала, попробуйте её описать подробно и не торопясь. Правильная формулировка - это половина решения :)

 

ЗЫ. Скажите, о форме изходных импульсов а-приори что известно? Я вижу результат некой НЧ фильтрации невесть чего. Описать можете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сохранил в png

 

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

Тоесть то минимальное время, которое необходимо подавать напряжение на клапан, чтобы он открылся.

 

Для этого на клапан последовательно через определённые промежутки времени подаются воздействия с различной длительностью. Например от 3.10 мс до 0.60 мс с шагом в 0.2 мс.

При этом снимаются показания датчика давления обычно с периодом в 10 мс

 

Необходимо найти точку, где давление начало расти (графики 1, 3, 4), снижаться (график 2). Определить максимальное давление (график 5), максимальную разницу между давлениями (график 6).

 

Известно то, что, например, через каждые 5 с отправляется команда подать импульс определённой длительности на клапан. Наверное можно принять эту информацию за период сигнала.

 

Можно просто замерить шум с датчика давления, когда давление не меняется

 

Графики расположены слева направо, сверху вниз

1, 2

3, 4

5, 6

 

Есть пороговые величины давления при достижении которых считается, что давление начало расти.

 

Я думаю надо используя данные о периоде подачи воздействий на клапан выделить простые последовательности, выделить из них только верхнюю часть, профильтровать, составить ряд из средних значений амплитуд давления в верхних частях последовательностей.

А затем из этого ряда можно вычислять разности между соседними значениями и найти точки роста и уменьшения давления, максимальное значение давления и максимальную разность между соседними значениями давления.

 

Я иду в правильном направлении?

post-64408-1303017312_thumb.png

post-64408-1303017338_thumb.png

post-64408-1303017394_thumb.png

post-64408-1303017406_thumb.png

post-64408-1303017421_thumb.png

post-64408-1303017435_thumb.png

Изменено пользователем Lyubimov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я иду в правильном направлении?

Наверно в правильном.

Как вариант, работаем с векторами, один элемент указывает на позицию в исходной последовательности(время события)

из данных открытия клапана, выделяем отсчеты с датчика давления.

окно можно сделать чуть уже рабочего цикла клапана.

по данным проходим медианным фильтром, убираем случайные помехи от склейки. (он в какой-то мере ФНЧ)

потом ФНЧ.

на полученной кривой ищем нужные участки.

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простите, появляюсь здесь редко.

Задался вопросом: как бы я решал эту задачу сам...

Значится, так...

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

С моей точки зрения, формальный путь решения задачи заключается в следующем:

1. По заданной последовательности, находите сплайн-аппроксимацию заданной фунуции, обеспечивающей ей достаточное "сглаживание". Для уменьшения количества вычислений можно вместо "импульсов" подставить их осреднённые значения.

2. Найти вторую производную функции, полученной путём сплайн-сглаживания.

3. Сравнить её с порогом.

 

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

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

Остальные параметры "сглаженной" функции найти также не составит труда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...