Пример в помощь

(обсуждаемый алгоритм на языке матлаба):
C2R_signal_convert.rar ( 529 байт )
Кол-во скачиваний: 200Правда в моем примере фильтр взят КИХ на 512 отсчетов произвольно, и при фильтрации он фильтрует все отсчеты, в том числе и нулевые входные, так как используется стандартная функция фильтрации матлаба. Если его заменить на фильтр, который не будет использовать при фильтрации нулевые входные отсчеты, а также подобрать длину его ИХ, исходя из требований к допустимому уровню наложения спектров, то можно получить дополнительный выигрыш производительности.
Почему это работает:
Если есть комплексная огибающая c(t)=I(t)+jQ(t), из нее можно получить реальный сигнал следующей операцией:
g(t)=real{c(t)*exp(j*2*pi*fc*t)}=
=real{I(t)*cos(2*pi*fc*t)+jQ(t)*cos(2*pi*fc*t)+jI(t)*sin(2*pi*fc*t)+j*j*Q(
t)*sin(2*pi*fc*t)}=
=I(t)*cos(2*pi*fc*t)-Q(t)*sin(2*pi*fc*t)
В нашем случае fc=fs/4, при этом cos(2*pi*fc*t) принимает значения 1 0 -1 0 и далее повторяется, а sin(2*pi*fc*t) принимает значения 0 1 0 -1.
Вот и получается что выходной сигнал равен [I(0) -Q(1) -I(2) Q(3) ...] и так далее.
А повышение частоты дискретизации и фильтрация нужны для того чтобы избежать наложения спектра после умножения на комплексную экспоненту и перехода к реальному сигналу.
Отредактировал, "описки" поправил вроде все...
Сообщение отредактировал leksa - Apr 6 2009, 19:39
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away (Antoine de Saint-Exupery)