Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сдвиг комплексного сигнала
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Ar5789
Столкнулся с необходимостью сдвига комплексного сигнала в частотной области
на величину rFreq [0..0.25]. Делаю вот так:
//-
SC= 2*Pi*rFreq*i;

s=sin(SC);
c=cos(SC);

Icos = Smpl.re*c;
ISin = Smpl.re*s;
QCos = Smpl.im*c;
QSin = Smpl.im*s;

pSmplOut.re = Icos-QSin;
pSmplOut.im = QCos+ISin;

i=i+1;
//-

Операция естественно выполняется в цикле со счетчиком i.
Все нормально, но рано или поздно счетчик переполнится, так как действие будет
происходить в реальном режиме времени. Значит счетчик необходимо периодически
сбрасывать в 0. Вот на каком значении это делать, я в силу отсутствия знаний
в предметной области не знаю.
Частота дискретизации, шаг сдвига известны. Может ли кто-нибудь подсказать
как вычислить правильный размер счетчика, что бы не допустить разрывов по
фазе.
Заранее благодарен.

_Anatoliy
Реализуйте комплексный NCO и не нужно ничего сбрасывать.
nco
petrov
Цитата(Ar5789 @ Oct 12 2016, 13:24) *
Вот на каком значении это делать, я в силу отсутствия знаний
в предметной области не знаю.


Обычные бытовые часы со стрелками бесконечно крутятся и никаких разрывов. Таким же образом считает двоичный счётчик по модулю 2^N, N - разрядность сумматора. 0..2*pi -> 0..2^N
jorikdima
Цитата(Ar5789 @ Oct 12 2016, 03:24) *
Вот на каком значении это делать, я в силу отсутствия знаний
в предметной области не знаю.

аргумент синуса или косинуса все равно используется по модулю 2*pi. при превышении фазы двух пи и сбрасывайте, только остаток от деления на 2 пи не забудьте добавить. Другими словами, реализуйте деление на 2пи
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.