Перенос спектра сигнала на нулевую частоту

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Перенос спектра сигнала на нулевую частоту

Сообщение red15530 »

Имеется сигнал на частоте 6кГц-6,5кГц. Частота дискретизации 40кГц. Требуется перенести его на нулевую частоту.
Я посчитал два массива cos и sin:
cosarray[40]={cosf(2*PI*0/(40.0/6.0)),cosf(2*PI*1.0/(40.0/6.0)),cosf(2*PI*2.0/(40.0/6.0)),и т.д
sinarray[40]={sinf(2*PI*0/(40.0/6.0)),sinf(2*PI*1.0/(40.0/6.0)),sinf(2*PI*2.0/(40.0/6.0)),и т.д
Далее при приходе нового значения от АЦП я делаю:
if (j!=39)
{
j++;
}
else
{
j=0;
}
res=sqrtf(((adcres*cosarray[j])*(adcres*cosarray[j]))+((adcres*sinarray[j])*(adcres*sinarray[j])));
Далее res я пропускаю через ФНЧ с частотой среза 500Гц, но не вижу своего сигнала.
Причем если я пропускаю исходный сигнал adcres через ПФ 6-6,5кГц, сигнал там присутствует.
Где я допустил ошибку? Что я делаю не так?
Я только начал разбираться с переносом спектра и возможно что-то не понимаю и делаю не так...
Как я понял чтобы сделать понижающие преобразование нужно входной сигнал умножить на . Результатом будет комплексная последовательность

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1053
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Перенос спектра сигнала на нулевую частоту

Сообщение Бахурин Сергей »

если есть входной сигнал ,то для переноса некторой частоты в ноль надо сформировать два синала:




После этого отфильтровать оба канала ФНЧ и только после этого можно смотреть амплитуду.

В вашем случае я не понял почему переносите 6 кГц в ноль? Обычно переносят середину полосы в ноль. В вашем случае сигнал от 6 до 6.5 кГц, значит сбрасывать надо с частоты 6.25 кГц, а не с 6.

red15530
Сообщения: 8
Зарегистрирован: 13 дек 2019, 10:56

Re: Перенос спектра сигнала на нулевую частоту

Сообщение red15530 »

Что в этой формуле f0? Частота на которую я хочу перенести спектр? То есть когда я задаю вектора cos и sin я допустил ошибку?
cosarray[40]={cosf(2*PI*0*6/40),cosf(2*PI*1*6/40),cosf(2*PI*2*6/40),и т.д
sinarray[40]={sinf(2*PI*0*6/40),sinf(2*PI*1*6/40),sinf(2*PI*2*6/40),и т.д
Почему так важно сначала отфильтровать оба канала I и Q? Почему нельзя это сделать после того как я получу результирующий вектор?
Я просто не правильно сказал... 6кГц и есть середина моей полосы. Поэтому полезный мне сигнал находиться в полосе 6-6,5кГц.

Ответить