Выявление распространенных периодических сигналов (квадрат, синус, пилообразный сигнал, ...) - PullRequest
7 голосов
/ 17 июля 2009

Без какого-либо взаимодействия с пользователем, как программа может определить, какой тип сигнала присутствует в записи с АЦП?

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

Various waveforms

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

Ответы [ 7 ]

7 голосов
/ 17 июля 2009

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

С этим возьмите один период (приблизительно) формы сигнала.

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

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

4 голосов
/ 17 июля 2009

Сделайте БПФ, найдите нечетные и четные гармонические пики и сравните скорость, с которой они уменьшаются, с библиотекой общей формы волны .. пиковые ... отношения.

3 голосов
/ 17 июля 2009

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

2 голосов
/ 29 июля 2009

Этот ответ не предполагает шума и что это простое учебное упражнение.

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

0 голосов
/ 24 декабря 2014

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

0 голосов
/ 31 июля 2009

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

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

2) в течение всей секунды считайте пересечения нуля. в этот момент у вас есть cps (циклов в секунду) и вы знаете частоту осциллятора. (на случай, если это то, что вы хотели знать)

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

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

5) проверка на пилообразную волну: аналогично прямоугольной, но за большой дельтой сигнала последует линейная постоянная дельта сигнала.

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

0 голосов
/ 17 июля 2009

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

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

следующая информация взята с этой ссылки о csound.

(*) Пилообразная волна содержит (теоретически) бесконечное число гармонических частичек, каждая в соотношении, обратном частичному числу. Таким образом, фундаментальный (1) имеет амплитуду 1, второй частичный 1/2, третий 1/3 и n-й 1 / n.

(**) Квадратная волна содержит (теоретически) бесконечное число гармонических частичек, но только нечетные гармоники (1,3,5,7, ...) Амплитуды находятся в соотношении, обратном частичное число, как пилообразные волны. Таким образом, фундаментальный (1) имеет амплитуду 1, третий частичный 1/3, пятый 1/5 и n-й 1 / n.

...