Frisham 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Столкнулся с необходимостью сдвига комплексного сигнала в частотной области на величину 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. Вот на каком значении это делать, я в силу отсутствия знаний в предметной области не знаю. Частота дискретизации, шаг сдвига известны. Может ли кто-нибудь подсказать как вычислить правильный размер счетчика, что бы не допустить разрывов по фазе. Заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Реализуйте комплексный NCO и не нужно ничего сбрасывать. nco Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 12 октября, 2016 Опубликовано 12 октября, 2016 · Жалоба Вот на каком значении это делать, я в силу отсутствия знаний в предметной области не знаю. Обычные бытовые часы со стрелками бесконечно крутятся и никаких разрывов. Таким же образом считает двоичный счётчик по модулю 2^N, N - разрядность сумматора. 0..2*pi -> 0..2^N Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 27 октября, 2016 Опубликовано 27 октября, 2016 · Жалоба Вот на каком значении это делать, я в силу отсутствия знаний в предметной области не знаю. аргумент синуса или косинуса все равно используется по модулю 2*pi. при превышении фазы двух пи и сбрасывайте, только остаток от деления на 2 пи не забудьте добавить. Другими словами, реализуйте деление на 2пи Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться