Перенос спектра сигнала на нулевую частоту
Добавлено: 01 июн 2021, 09:11
Имеется сигнал на частоте 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кГц, сигнал там присутствует.
Где я допустил ошибку? Что я делаю не так?
Я только начал разбираться с переносом спектра и возможно что-то не понимаю и делаю не так...
Как я понял чтобы сделать понижающие преобразование нужно входной сигнал умножить на . Результатом будет комплексная последовательность
Я посчитал два массива 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кГц, сигнал там присутствует.
Где я допустил ошибку? Что я делаю не так?
Я только начал разбираться с переносом спектра и возможно что-то не понимаю и делаю не так...
Как я понял чтобы сделать понижающие преобразование нужно входной сигнал умножить на . Результатом будет комплексная последовательность