ЛИНЕЙНАЯ СВЕРТКА
a[n] = [2; 1; 3; -1]; b[n] = [-1; 1; 2];
a[m] | 2 | 1 | 3 | -1 | ||||||
b[0-m] | 2 | 1 | -1 | s[0] = 2∙(-1)=-2 | ||||||
b[1-m] | 2 | 1 | -1 | s[1] = 1∙(-1)+2∙1=1 | ||||||
b[2-m] | 2 | 1 | -1 | s[2] = 3∙(-1)+1∙1+2∙2=2 | ||||||
b[3-m] | 2 | 1 | -1 | s[3] = 2+3+1 = 6 | ||||||
b[4-m] | 2 | 1 | -1 | s[4] = 6-1 = 5 | ||||||
b[5-m] | 2 | 1 | -1 | s[5] = -2 | ||||||
b[6-m] | 2 | 1 | -1 | s[6] = 0 |
ЦИКЛИЧЕСКАЯ СВЕРТКА
a[n] = [2; 1; 3; -1]; b[n] = [-1; 3; 2; 1];
a[m] | 2 | 1 | 3 | -1 | |||||||||
b[0-m] | -1 | 1 | 2 | 3 | -1 | 1 | 2 | 3 | -1 | 1 | 2 | 3 | s[0]=2∙(-1)+1∙1+3∙2-1∙3=2 |
b[1-m] | 3 | -1 | 1 | 2 | 3 | -1 | 1 | 2 | 3 | -1 | 1 | 2 | s[1]=2∙3+1∙(-1)+3∙1-1∙2=6 |
b[2-m] | 2 | 3 | -1 | 1 | 2 | 3 | -1 | 1 | 2 | 3 | -1 | 1 | s[2]=2∙2+1∙3+3∙(-1)-1∙1=3 |
b[3-m] | 1 | 2 | 3 | -1 | 1 | 2 | 3 | -1 | 1 | 2 | 3 | -1 | s[3]=2∙1+1∙2+3∙3-1∙(-1)=14 |
СВЕРТКА ОТСЧЕТОВ ВО ВРЕМЕННОЙ ОБЛАСТИ
С БАЗИСНЫМИ ФУНКЦИЯМИ ПРИ ДПФ ДЛЯ N=8
МАТРИЦА ДИСКРЕТНОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ
у = АDFT x
Формула для элемента матрицы в n-м столбце и m-й строке:
|
|
ДПФ СИНУСОИДАЛЬНОГО СИГНАЛА
С ЦЕЛЫМ ЧИСЛОМ ПЕРИОДОВ В ВЫБОРКЕ
ДПФ СИНУСОИДАЛЬНОГО СИГНАЛА
С НЕЦЕЛЫМ ЧИСЛОМ ПЕРИОДОВ В ВЫБОРКЕ
РАЗМЫВАНИЕ СПЕКТРА ДЛЯ СЛУЧАЯ ДВУХ СИГНАЛОВ
ВЗВЕШИВАНИЕ С ИСПОЛЬЗОВАНИЕМ ОКОННОЙ ФУНКЦИИ
ПАРАМЕТРЫ ВЕСОВЫХ ФУНКЦИЙ
ХАРАКТЕРИСТИКИ ВЕСОВЫХ ФУНКЦИЙ
Наименование окна | ΔF0 | ΔF0,5 | γmax, дБ | β, дБ | Скорость спада, дБ/окт |
Прямоугольное | 2 | 0,89 | -13 | 0 | 6 |
Бартлетта | 4 | 1,33 | -26,5 | -6 | 12 |
Ханна | 4 | 1,5 | -31,5 | -6 | 18 |
Блэкмана | 6 | 1,7 | -58 | -7,54 | 18 |
ПРЯМОУГОЛЬНОЕ ОКНО
ОКНО БАРТЛЕТТА
ОКНО БЛЭКМЕНА
ОКНО ХАННА
КОЭФФИЦИЕНТЫ РЯДА ФУРЬЕ
МАТРИЦА ПРЕОБРАЗОВАНИЯ ФУРЬЕ
СТЕПЕННОЙ РЯД W ДЛЯ N=8
МАТРИЦА ПРЕОБРАЗОВАНИЯ ФУРЬЕ
С УЧЕТОМ ПЕРИОДИЧНОСТИ W
БПФ ДЛЯ N=4
f={f0, f1, f2, f3}
СТЕПЕННОЙ РЯД W ДЛЯ N=4
ПЕРЕПИШЕМ МАТРИЦУ
УЧТЕМ
ПЕРЕПИШЕМ МАТРИЦУ
РАЗОБЪЕМ МАТРИЦУ, ВЫПОЛНИВ ПРОРЕЖИВАНИЕ
ИЛИ ВОЗВРАЩАЯСЬ К КОЭФФИЦИЕНТАМ
ПЕРЕХОДЯ К ЧИСЛЕННЫМ ЗНАЧЕНИЯМ ПОЛУЧИМ
Или
ДПФ ДЛЯ 8-ТОЧЕЧНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ
ВЫДЕЛЕНИЕ СИММЕТРИИ
УЧЕТ ПЕРИОДИЧНОСТИ W
УЧТЕМ:
ПЕРЕСТАНОВКА РАЗРЯДОВ И СОРТИРОВКА
ДЛЯ 8-ТОЧЕЧНОЙ ПОСЛЕДОВАТЕЛЬНОСТИ
ИСХОДНЫЙ СИГНАЛ | СИГНАЛ ПОСЛЕ ПЕРЕСТАНОВКИ | ||
DEC | BIN | DEC | BIN |
0 | 000 | 0 | 000 |
1 | 001 | 4 | 100 |
2 | 010 | 2 | 010 |
3 | 011 | 6 | 110 |
4 | 100 | 1 | 001 |
5 | 101 | 5 | 101 |
6 | 110 | 3 | 011 |
7 | 111 | 7 | 111 |
РЕАЛИЗАЦИЯ БПФ НА МИКРОКОНТРОЛЛЕРЕ
Выборка данных их АЦП
// sample[] – массив 16-разрядных переменных
for i = 0 to (N-1)
|
|
Begin
DoADCSampleConversion()
// выборка входного сигнала в АЦП
sample[i] = read8BitSampleFromADC()
// чтение 8-разрядных данных из АЦП
End
for i = 0 to (N-1)
Begin
if (sample[i] & 0x0080)
// Если 8-разрядная выборка отрицательная
sample[i] = sample[i] + 0xFF00 // установить знак (-)
// 16-разрядного слова
End
Перестановка бит
i=x_n_re[ 1]; x_n_re[ 1]=x_n_re[128]; x_n_re[128]=i;
i=x_n_re[ 2]; x_n_re[ 2]=x_n_re[ 64]; x_n_re[ 64]=i;
i=x_n_re[ 3]; x_n_re[ 3]=x_n_re[192]; x_n_re[192]=i;
i=x_n_re[ 4]; x_n_re[ 4]=x_n_re[ 32]; x_n_re[ 32]=i;
...
i=x_n_re[207]; x_n_re[207]=x_n_re[243]; x_n_re[243]=i;
i=x_n_re[215]; x_n_re[215]=x_n_re[235]; x_n_re[235]=i;
i=x_n_re[223]; x_n_re[223]=x_n_re[251]; x_n_re[251]=i;
i=x_n_re[239]; x_n_re[239]=x_n_re[247]; x_n_re[247]=i;
Таблица для вычисления синуса и косинуса
const int cosLUT[N/2] = {+128,+127,+127,...,-127,-127,-127};
const int sinLUT[N/2] = {+0,+3, +6,...,+9, +6, +3};
Преобразование из комплексной в показательную форму
const unsigned char magnLUT[16][16] =
{
{0x00,0x10,0x20,...,0xd0,0xe0,0xf0},
{0x10,0x16,0x23,...,0xd0,0xe0,0xf0},
...
{0xe0,0xe0,0xe2,...,0xff,0xff,0xff},
{0xf0,0xf0,0xf2,...,0xff,0xff,0xff}
};
...
/* Вычисление x_n_re=abs(x_n_re) и x_n_im=abs(x_n_im) */
...
for(i=1; i<N_DIV_2; i++)
x_n_re[i] = magnLUT[x_n_re[i]>>11][x_n_im[i]>>11];