Вычитание выходного сигнала датчиков, имеющих взаимную индуктивность между ними


12

Справочная информация: программное обеспечение, которое я использую для анализа моих сигналов, является Matlab. У меня есть два аудиосигнала, которые были записаны с помощью двух магнитных датчиков. Позволяет назвать один датчик A, а другой B. A и B имеют взаимную индуктивность между ними.

Пока работают датчики A и B, я бы хотел вычесть информацию, полученную в датчике A из-за взаимной индуктивности от датчика B.

Я попытался вычесть сигнал B из сигнала A, просто написав в Matlab (AB), но это дает мне странный ответ. Я думаю, что это происходит из-за сдвига, который я имею в фазе. Время начала записи двух треков одинаково, и поэтому я думаю, что это не задержка.

Я хотел бы знать, как сделать этот процесс вычитания в теории, и если у кого-нибудь есть какие-либо советы, как легко реализовать его в matlab, я бы хотел знать.

Я буду очень признателен за любую помощь.

Заранее спасибо.

Ниже я приложил картинки графиков сигналов. На первом рисунке вы можете видеть сигналы, которые поступают от датчика A и датчика B. На втором рисунке я изобразил датчик A красным и датчик B синим в диапазоне 2,12: 2,16 и увеличил их еще больше.

введите описание изображения здесь

введите описание изображения здесь


Итак, из ваших графиков видно, что между источником 1 и источником 2 не так много перекрестных помех, только от 2 до 1. В таком случае неверно ли ваше наложение на изображение («Это должно быть вычтено из источника 2»)? Похоже, вы пытаетесь удалить источник 2 из 1, верно?
Джейсон Р

Правильно.
user1017064

Чтобы подтвердить идею фазового сдвига, нарисуйте обе формы волны близко, только в том числе от индекса 2.3 до 2.4 или около того, чтобы вы могли видеть отдельные волны в обоих каналах
эндолит

Ответы:


4

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

Допустим, у вас есть два аудиосигнала xa (t) и xb (t) и два сенсорных сигнала ya (t) и yb (t). Поскольку существует связь между датчиками, вы получите перекрестные помехи, и мы можем записать в частотной области

Ya(w) = Haa(w)*xa(w) + Hba(w)*xb(w)
Yb(w) = Hab(w)*xa(w) + Hbb(w)*xb(w)

где Hxy (w) - передаточная функция от сигнала "x" к сигналу датчика "y". 4 передаточные функции образуют матрицу 2x2, и для полного восстановления исходных сигналов необходимо инвертировать матрицу и применить инвертированные передаточные функции матрицы к принятым сигналам датчиков.

Поскольку перекрестные помехи малы, вы можете просто измерить передаточную функцию Hba (w) напрямую и вычесть ее следующим образом: Измерить передаточную функцию от сигнала A к датчику B, когда сигнал B равен 0. Создать фильтр из этой передаточной функции ( FIR или IIR, в зависимости от его формы). Теперь вы можете измерить и вычесть фильтрованную версию из сигнала датчика A из сигнала датчика B:

yb(t)' = yb(t)-hab(t)**ya(t)

где hab (t) - импульсный отклик фильтра перекрестных помех и ** оператор свертки.

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


Хилмар, я новичок в matlab и столкнулся с некоторыми трудностями при попытке реализовать твой ответ. Я буду благодарен за любую помощь от всех. Сначала я записал сигнал A, когда датчик B равен 0. Теперь, какие аргументы я должен вставить в фильтр при вызове функции «фильтр»? Если вам нужна визуализация сигнала, вы можете увидеть его в приведенном выше вопросе. Еще раз спасибо.
user1017064

5

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

У меня есть пример Python здесь . Также есть FastICA для MATLAB . Если они являются аудиосигналами, воспринимаемыми магнитно, между ними, вероятно, нет заметной задержки. ICA хорошо работает в этом случае.


FastICA для Matlab не помог мне вычесть два сигнала. Результат просто недостаточно хорош. В своем комментарии выше я прикрепил ссылку на фотографию, которая может объяснить ситуацию, с которой я столкнулся: bit.ly/rXmVgH. Кстати, большое спасибо за вашу помощь.
user1017064
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.