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

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

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


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

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

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

image.thumb.png.bff0f16cb09c7ba905ca4728ce347218.png

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

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

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

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


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

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

Изменено пользователем gridinp

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


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

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

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

Изменено пользователем aBoomest

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


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

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

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


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

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

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


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

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

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


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

17 minutes ago, soldat_shveyk said:

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

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

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


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

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 Гц. Искажения (переходные процессы) при коммутациях.

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


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

36 minutes ago, aBoomest said:

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

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

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


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

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

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

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

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


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

16 minutes ago, des00 said:

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

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

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


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

8 minutes ago, aBoomest said:

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

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

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


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

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 точно.

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


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

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

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

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

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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