Jump to content
    

Частота сигнала

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

Share this post


Link to post
Share on other sites

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

вот пример построения спектра "в упор" для определённого сигнала

image.thumb.png.bff0f16cb09c7ba905ca4728ce347218.png

и построение спектрограммы для этого же определённого сигнала

 image.thumb.png.0a5da3c55e5adbe82a562d61861ebbfd.pngimage.thumb.png.0887c2c62dc1f003506fdcfe4f7ec77c.png

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

Share this post


Link to post
Share on other sites

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

Edited by gridinp

Share this post


Link to post
Share on other sites

Спасибо за быстрый ответ.
stealthisname
Спектр и т.п. не пойдет. Мне нужно численное значение, а не что-то визуальное.

gridinp
1. Можно чуть подробнее? Просто производную брать? Из теории модуляции как раз помнится фаза и частота связаны производной. Какие-то нюансы есть?
2. Гильберт и Фурье чем отличаются? ПОстоянно попадаются статьи с гильберта преобразованием. Чем оно лучше фурье?

Edited by aBoomest

Share this post


Link to post
Share on other sites

стандартное отклонение производной сигнала поделить на стандартное отклонение сигнала

Share this post


Link to post
Share on other sites

Гильберт и Фурье - разные вещи, но преобразование можно посчитать через Фурье, для это берём от сигнала БПФ, потом умножаем положительные частоты на 2, зануляем отрицательные частоты и делаем обратное БПФ (постоянку и найквиста не трогаем).

Share this post


Link to post
Share on other sites

26 minutes ago, aBoomest said:

Можно чуть подробнее? Просто производную брать? Из теории модуляции как раз помнится фаза и частота связаны производной. Какие-то нюансы есть?

Если есть синусоидальный сигнал с хорошим SNR, частоту которого надо изменять, то можно воспользоваться свойством производной от синуса:

diff[sin(wt)] = w*cos(w*t)

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

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

freq = [(RMS(sig_diff) / RMS(sig)) / 2*pi ] * Fs

Share this post


Link to post
Share on other sites

17 minutes ago, soldat_shveyk said:

Если есть синусоидальный сигнал с хорошим SNR, частоту которого надо изменять

ТСу нужно хотя бы обозначить классы сигналов из которых он хочет узнать частоту, потом можно предлагать алгоритмы. А то вдруг у него ШПС с базой 1 млн в полосе 1ГГц

Share this post


Link to post
Share on other sites

1 hour ago, gridinp said:

умножаем положительные частоты на 2

Не могли бы пояснить недалекому как это? Это получается растянуть по оси частот?

 

53 minutes ago, soldat_shveyk said:

Если есть синусоидальный сигнал с хорошим SNR, частоту которого надо изменять, то можно воспользоваться свойством производной от синуса:

diff[sin(wt)] = w*cos(w*t)

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

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

freq = [(RMS(sig_diff) / RMS(sig)) / 2*pi ] * Fs

Спасибо. Поизучаю.

35 minutes ago, des00 said:

ТСу нужно хотя бы обозначить классы сигналов из которых он хочет узнать частоту, потом можно предлагать алгоритмы. А то вдруг у него ШПС с базой 1 млн в полосе 1ГГц

Сигналы в теории примерно 0 - 600 Гц. В реальности на практике 10 - 400 Гц. Искажения (переходные процессы) при коммутациях.

Share this post


Link to post
Share on other sites

36 minutes ago, aBoomest said:

Сигналы в теории примерно 0 - 600 Гц. В реальности на практике 10 - 400 Гц. Искажения (переходные процессы) при коммутациях.

модуляция как понимаю отсуствует ? чистый синус, максимум с тепловым шумом?

Share this post


Link to post
Share on other sites

2 часа назад, aBoomest сказал:

Спектр и т.п. не пойдет. Мне нужно численное значение, а не что-то визуальное.

Вычисление частоты по спектру - единственный оптимальный способ. Все остальное - так себе. Если во времени я бы предложил пробку [1 -2*cos(2*pi/fd*f) 1]. Адаптация среднего к-та к минимуму выхода с последующим acos. При больших снр работает хорошо. 

Share this post


Link to post
Share on other sites

16 minutes ago, des00 said:

модуляция как понимаю отсуствует

Вообще редко но может быть. НО этот случай в рассмотрение не идет. Одним словом: отсутствует.

Share this post


Link to post
Share on other sites

8 minutes ago, aBoomest said:

Вообще редко но может быть. НО этот случай в рассмотрение не идет. Одним словом: отсутствует.

тогда еще как вариант, классический частотный детектор, на основе фильтра с линейным наклоном АЧХ в исследуемой плоскости. Но он требует калибровки к уровню сигнала)

Share this post


Link to post
Share on other sites

12 minutes ago, looser said:

Если во времени я бы предложил пробку [1 -2*cos(2*pi/fd*f) 1]. Адаптация среднего к-та к минимуму выхода с последующим acos

А можно л-ру? Или чуть пояснить? 

13 minutes ago, looser said:

Вычисление частоты по спектру - единственный оптимальный способ. Все остальное - так себе. Если во времени я бы предложил пробку [1 -2*cos(2*pi/fd*f) 1]. Адаптация среднего к-та к минимуму выхода с последующим acos. При больших снр работает хорошо. 

СНР норм. Больше 100 точно.

Share this post


Link to post
Share on other sites

В 27.01.2023 в 15:07, aBoomest сказал:

Не могли бы пояснить недалекому как это? Это получается растянуть по оси частот?

зачем растягивать? вот у нас например сигнал 8 отсчетов и спектр получится длиной 8, тогда частоты (от 0) 1..3 - умножаем на 2, а 5..7 обнуляем

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...