Расчет частоты для сигнала в c # .net - PullRequest
0 голосов
/ 22 января 2011

Я разрабатываю приложение для осциллографа в c # .NET, я рисую различные виды волн (синус, квадрат и т. Д.) С помощью управления zedgraph.Я получаю значения от осциллографа и сохраняю их в буфере размером 1024 (байтовый массив) и должен вычислять такие параметры, как период времени, частота, время нарастания, время спада и т. Д. Во время выполнения.для этой цели мне нужно извлечь только один цикл из всего сигнала. Еще одна проблема состоит в том, что значения не всегда растут или падают непрерывно, средние значения хранятся в буфере, как это [0,0,0,1,1,2,3, 4,5,5,6,6,6,5,5,4,3,2,1,1,0,0,0 ..........].сигналы постоянно принимаются от машины.Не уверен, что волны всегда колеблются вокруг нуля.Спасибо С наилучшими пожеланиями Nilesh

Ответы [ 2 ]

2 голосов
/ 22 января 2011

Вы можете оценить частоту несколькими способами.Вероятно, проще всего, если у вас есть математическая библиотека, это вычислить БПФ и взять самую низкую частоту.

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

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

http://www.cs.berkeley.edu/~vazirani/s09quantum/notes/lecture4.pdf

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

0 голосов
/ 22 января 2011

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

alt text

Для графика 1 первыйкорыто 2, первый гребень 12. Узнайте, сколько времени проходит между этими точками, и у вас есть половина длины волны.

Для второго графика применяется тот же принцип: вы можете рассчитать длину волны (и, следовательно, период) для каждого раздела графика

...