[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ВН 30 октября 2002 г. 13:21
В ответ на: Ответ: Cпасибо, беру тайм-аут (подумаю) отправлено vash 30 октября 2002 г. 06:00

Еще раз попробую объяснить. Увеличение размера БПФ корректно с точки зрения оптимального (согласованного) приема. Вот конкретный пример.
Его можно проделать вручную, на бумаге, хотя и утомительно.
Необходимо реализовать соглас. фильтр. Принимаемый реализация - смесь сигнала с шумом. Обозначу ее x0,x1,x2,x3,x4..... Где-то в этой смеси находится сигнал, имеющий длительность 3 отсчета.
Имеем опору, есс-но тоже длиной 3 отсчета. Обозначу отсчеты опоры s0,s1,s2.
Вычисления через БПФ. Для определенности (и облегчения ручной проверки) возьмем размер БПФ=8. Дополняем опору 0 до 8. Обозначу отсчеты полученного массива y0,y1,y2,y3,y4,y5,y6,y7. Понятно, что y3-y7=0, y0-y2=s0-s2.
Берем 8 т.БПФ над y0-y7. Запоминаем. Берем 8 т. БПФ над x0-x7,умножаем на компл.-сопряж. запомненный спектр y0-y7. Над результатом обратное 8 т. БПФ. Получаем некие z0-z7.
Причем, и это можно проверить вручную, эти z0-z7:
z0=x0*y0+x1*y1+x2*y2+x3*y3+x4*y4+x5*y5+x6*y6+x7*y7;
z1=x1*y0+x2*y1+x3*y2+x4*y3+x5*y4+x6*y5+x7*y6+x0*y7;
z2=x2*y0+x3*y1+x4*y2+x5*y3+x6*y4+x7*y5+x0*y6+x1*y7;
z3=x3*y0+x4*y1+x5*y2+x6*y3+x7*y4+x0*y5+x1*y6+x2*y7;
z4=x4*y0+x5*y1+x6*y2+x7*y3+x0*y4+x1*y5+x2*y6+x3*y7;
z5=x5*y0+x6*y1+x7*y2+x0*y3+x1*y4+x2*y5+x3*y6+x4*y7;
z6=x6*y0+x7*y1+x0*y2+x1*y3+x2*y4+x3*y5+x4*y6+x5*y7;
z7=x7*y0+x0*y1+x1*y2+x2*y3+x3*y4+x4*y5+x5*y6+x6*y7;
И, поскольку, y3-y7=0, а y0-y2=s0-s2, получим:
z0=x0*s0+x1*s1+x2*s2;
z1=x1*s0+x2*s1+x3*s2;
z2=x2*s0+x3*s1+x4*s2;
z3=x3*s0+x4*s1+x5*s2;
z4=x4*s0+x5*s1+x6*s2;
z5=x5*s0+x6*s1+x7*s2;
z6=x6*s0+x7*s1+x0*s2;
z7=x7*s0+x0*s1+x1*s2;
Видно, что z0-z5 - отсчеты корреляции, такие же, как если бы они были получены во временной области. Разница только в том, что во временной области можно получить точные значения, пусть даже увеличением разрядности результата, а через БПФ неизбежны округления, по крайней мере из-за невозможности точного представления sin,cos, не говоря уж об округлении промеж. результатов.
Т.е. z0-z5 -округленные значения. Округление аналогично введению дополн. шума. А существенно уменьшить влияние округления можно, используя либо бл. плавающую запятую, либо обычную плав. запятую.
По аналогии с тем, что я Вам писал в первом ответе, возьмем в качестве правильных значений корр. не z0-z5, а z0-z4.
Если затем взять отсчеты сигнала x5,x6,x7,x8,x9,x10,x11,x12 и проделать то же самое, то получим:
z5=x5*s0+x6*s1+x7*s2;
z6=x6*s0+x7*s1+x8*s2;
z7=x7*s0+x8*s1+x9*s2;
z8=x8*s0+x9*s1+x10*s2;
z9=x9*s0+x10*s1+x11*s2;
z10=x10*s0+x11*s1+x12*s2;
z11=x11*s0+x12*s1+x5*s2;
z12=x12*s0+x5*s1+x6*s2;
Правильные отсчеты z5-z9, точнее z5-z10.
Следующий эксперимент - опору s0-s2 дополним 0 до 16, получим y0-y15. Проделываем то же самое, но с размером БПФ=16 и на первом проходе берем отсчеты сигнала x0-x15. Получим
z0=x0*y0+x1*y1+x2*y2+....+x15*y15;
z1=x1*y0+x2*y1+x3*y2+....+x15*y14+x0*y15;
z2=x2*y0+x3*y1+x4*y2+....+x15*y13+x0*y14+x1*y15;
z3=x3*y0+x4*y1+x5*y2+....+x15*y12+x0*y13+...+x2*y15;
z4=x4*y0+x5*y1+x6*y2+....+x15*y11+x0*y12+...+x3*y15;
z5=x5*y0+x6*y1+x7*y2+....+x15*y10+x0*y12+...+x4*y15;
z6=x6*y0+x7*y1+x8*y2+....+x15*y9+x0*y10+...+x5*y15;
z7=x7*y0+x8*y1+x9*y2+....+x15*y8+x0*y9+...+x6*y15;
z8=x8*y0+x9*y1+x10*y2+....+x15*y7+x0*y8+...+x7*y15;
z9=x9*y0+x10*y1+x11*y2+....+x15*y6+x0*y7+...+x8*y15;
z10=x10*y0+x11*y1+x12*y2+....+x15*y5+x0*y6+...+x9*y15;
z11=x11*y0+x12*y1+x13*y2+....+x15*y4+x0*y5+...+x10*y15;
z12=x12*y0+x13*y1+x14*y2+x15*y3+x0*y4+...+x11*y15;
z13=x13*y0+x14*y1+x15*y2+x0*y3+...+x12*y15;
z14=x14*y0+x15*y1+x0*y2+....+x13*y15;
z15=x15*y0+x0*y1+....+x14*y15;
И, так как y0-y2=s0-s2, y3-y15=0, получим:
z0=x0*s0+x1*s1+x2*s2;
z1=x1*s0+x2*s1+x3*s2;
z2=x2*s0+x3*s1+x4*s2;
z3=x3*s0+x4*s1+x5*s2;
z4=x4*s0+x5*s1+x6*s2;
z5=x5*s0+x6*s1+x7*s2;
z6=x6*s0+x7*s1+x8*s2;
z7=x7*s0+x8*s1+x9*s2;
z8=x8*s0+x9*s1+x10*s2;
z9=x9*s0+x10*s1+x11*s2;
z10=x10*s0+x11*s1+x12*s2;
z11=x11*s0+x12*s1+x13*s2;
z12=x12*s0+x13*s1+x14*s2;
z13=x13*s0+x14*s1+x15*s2;
z14=x14*s0+x15*s1+x0*s2;
z15=x15*s0+x0*s1+x1*s2;
Т.е. правильные отсчеты z0-z12 (z0-z13). От того, что увеличили размер БПФ, ничего не изменилось, только за один раз вычисляется больше отсчетов.
В качестве дополнения. Корреляцию или свертку, вычисляемую через БПФ называют циклической корреляцией (сверткой), а вычисляемую непосредственно - так и называют корреляцией (сверткой), иногда линейной корреляцией (сверткой). Циклическая - потому, что вычисление через БПФ корреляции сигнала, например x0-x7, с сигналом, например y0-y7, полностью аналогично непосредственному вычислению корреляции периодически продолженного сигнала x с y0-y7. Т.е. непосредственному вычислению корр. x0,x1,...x7,x0,x1,...x7,x0... c y0-y7.
В приведенных примерах z0-z7 (для БПФ8) и z0-z15 (БПФ16) -циклические корреляции, но их первые отсчеты, z0-z5 (z0-z12), совпадают с отсчетами линейных корреляций. Собственно к циклическим относятся только z6-z7 (z14-z15). Это из-за дополнения опоры 0. Понятно, что если длительность опоры увеличить, например на 1 (s0-s3), при сохранении размеров БПФ, то на 1 увеличится число отсчетов циклических корреляций и на 1 уменьшится число линейных. И наоборот.

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru