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

Выделить фазы из сигнала

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

В периоде у меня примерно 256  точек, но точность особо и не нужна - достаточно 1-2 градуса.

Фурье, я так понимаю, не годится - там на каждую частоту одна фаза

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


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

3 minutes ago, Aleх said:

Как бы мне вычислить все эти составляющие - фазы и амплитуды, каким агоритмом воспользоваться? 

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

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


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

4 minutes ago, blackfin said:

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

Я бы не спешил.
Если есть некий закон затухания и фазового сдвига, то не все потеряно.
Вольфрам в помощь - https://www.wolframalpha.com/input/?i=sin(50*f)%2B0.9*sin(50*f%2B1)%2B0.8*sin(50*f%2B2) 

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


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

1 minute ago, AlexandrY said:

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

Судя по описанию ТС, затухание каждой гармоники от времени не зависит.

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


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

От времени никак не зависит. Просто, сложены копии опорного синуса с разной фазой и амплитудой - нужно узнать эти фазы, и - желательно- амплитуды

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


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

Just now, Aleх said:

От времени никак не зависит. Просто, сложены копии опорного синуса с разной фазой и амплитудой - нужно узнать эти фазы, и - желательно- амплитуды

Попробуйте сложить N (нет, N мало! Лучше M) комплексных чисел, а потом по полученной сумме найти все слагаемые по отдельности.. ;)

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


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

12 minutes ago, blackfin said:

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

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

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


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

1 minute ago, Aleх said:

Сигнал выглядит как периодический, той же частоты, но с кривой формой.

тогда это не синусы одной частоты.

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


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

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

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


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

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

 

вспоминайте школьную тригонометрию, если пример со сложением M комплексных чисел слишком сложный.

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


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

Про комплексные числа я действительно не уловил. Значит, восстановить не удастся? Понял. Спасибо

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


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

Разбираюсь с ЦОС, возник вопрос по БИХ фильтру и алгоритму Герцеля.

1. Есть набор данных с АЦП - 4096 отсчетов. Сигнал - косинус с частотой 20кГц, начальной фазой 0 и амплитудой 1, дискретизация с частотой 2МГц. Загрузил в эксель, там же разместил формулы БИХ фильтра ( воспользовался статьей https://ru.dsplib.org/content/goertzel/goertzel.html ). Получилось, что 20КГц соответствует 41й спектральной составляющей. БИХ фильтр для k=41 выдал некое комплексное число на выходе. Я ожидал увидеть Re=1 Im=0, но получилось что то совершенно не похожее. Далее, я взял набор входных данных и подвигал вперед-назад на входе БИХ фильтра: результат на выходе (почти) не поменялся, тот же самый комплексный вектор, хотя я рассчитывал что он будет крутиться вместе с входными данными.

2. Я решил, что ошибся в формулах БИХ фильтра.  По ссылке https://ru.dsplib.org/content/goertzel/goertzel.html в конце есть пример фильтра на 8 точек, перепечатал в эксель и убедился что формулы были забиты верно. Но - попробовал циклически прокрутить входные данные из примера, и снова на выходе фильтра - тот же вектор.

Вопрос. Что за вектор на выходе у БИХ фильтра, почему его фаза (почти) не меняется от циклической прокрутки входных данных?

Я планировал применить этот фильтр именно для вычисления фазы сигнала: снимать данные с ацп, грузить в БИХ фильтр и наблюдать относительное изменение фазы сигнала.

 

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


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

1 час назад, Aleх сказал:

Загрузил в эксель, там же разместил формулы БИХ фильтра

Не маялись бы Вы ерундой и делали бы все в Matlab/Scilab/Octave.

 

2 часа назад, Aleх сказал:

Я ожидал увидеть Re=1 Im=0, но получилось что то совершенно не похожее

Не сложно догадаться, что получили Вы 2025 - 256i. И что Вас так напугало? Делить на 2048 (Nfft/2) кто будет, Пушкин?:)

 

2 часа назад, Aleх сказал:

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

Не совсем понятно, что такое "подвигал вперед-назад", но в любом случае, результат меняться должен. Вот это вот Ваше "почти", это сколько?

 

2 часа назад, Aleх сказал:

Я планировал применить этот фильтр именно для вычисления фазы сигнала: снимать данные с ацп, грузить в БИХ фильтр и наблюдать относительное изменение фазы сигнала.

Боюсь Вас разочаровать, но полученная таким образом фаза будет от включения к включению равномерно и случайно распределена в диапазоне +пи...-пи. Да и два последовательных измерения тоже будут совпадать только в очень частном и в очень идеальном случае:)))

 

 

 

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


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

2 hours ago, Самурай said:

Не маялись бы Вы ерундой и делали бы все в Matlab/Scilab/OctaveНе сложно догадаться, что получили Вы 2025 - 256i. И что Вас так напугало? Делить на 2048 (Nfft/2) кто будет, Пушкин?:)

Про деление на N/2 я в статье не увидел (и кажется там и нет этого), спасибо!

Но непонятно следующее. Исходный сигнал имеет заранее заданную частоту, амплитуду, и фазу (я начал наполнять таблицу искусственно по формуле). При этом полученный после БИХ-ф вектор имеет кривую амплитуду и угол, даже если поделить на 2048 (под рукой нет компьютера, точного значения нет, но не Re=1 Im=0) результат непонятен. Так как же тогда трактовать результат, как пересчитать его в исходные (известные) характеристики сигнала?

 

По методике измерения - у меня чтото вроде дальнометра - я сам формирую исходный сигнал, а потом принимаю его отражение. Т.е. я могу запускать АЦП одновременно с запуском генератором исходного сигнала, и надеюсь что БИХ фильтр посчитает мне фазовый сдвиг.

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


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

16 минут назад, Aleх сказал:

Про деление на N/2 я в статье не увидел (и кажется там и нет этого)

Есть, но на один уровень выше. Вам бы лучше начать совсем с самых основ, уровня 1-ого курса ВУЗа, т.к. вопросы, наподобие того, что ниже, это цветочки... 

16 минут назад, Aleх сказал:

При этом полученный после БИХ-ф вектор имеет кривую амплитуду и угол, даже если поделить на 2048 (под рукой нет компьютера, точного значения нет, но не Re=1 Im=0) результат непонятен. Так как же тогда трактовать результат, как пересчитать его в исходные (известные) характеристики сигнала?

Кривая амплитуда и угол возникли потому, что Ваша частота 20кГц не попала РОВНО на 41-й бин ДПФ, а размазалась по всему спектру. Это же очевидно, т.к. шаг по частоте 2МГц/4096 = 488.2813...Гц. Т.е. что бы не было откликов на других частотах, входной сигнал должен быть 20019.53...Гц.

 

Что с этим делать? Выбирать правильную частоту, выбирать правильное количество выборок, делать аппроксимацию спектрального максимума различными методами. Все сильно зависит от точности и шумов. По вопросам точного измерения частоты на форуме очень много тем и сломанных копий:)

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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