Похоже мне ник пора менять.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Elektronik 21 мая 2003 г. 09:27
В ответ на: Ответ: Elektronik может дать совет? отправлено Ежик 20 мая 2003 г. 19:18

В свое время нарыл в инете реализации на C, Pascal и Basic.
Честное слово через yandex или google все ищется за 10 минут.
Если интересно могу выслать рабочий проект с БПФ для AVR реализованный на IAR C. Только без комментариев, так что врядли пригодится.
Хотя
DI частота квантования в герцах, алгоритм для 4096 точек, арифметика в плавающем видем, коэффициенты выйдут в массиве KOF, исходный сигнал в sig_4K,


Per = DI / 4096.0;
Per_Obr = 4096.0 / DI;
// получить исходный сигнал
N = 4096;
for(I = 0; I < N; I = I + 1)
{
Y[I] = (float)(sig_4K[I]);
X[I] = (float)(I) / DI;
}
// Подготовительные действия
E[1] = 2;
F[1] = 1;
C[1] = -1;
S[1] = 0;
for(I = 1; I <= 11;I = I + 1)
{
E[I+1] = E[I] << 1; // Умножение на 2
F[I+1] = F[I] << 1;
C[I+1] = cos(__PI / F[I+1]);
S[I+1] = -sin(__PI / F[I+1]);

}
// Расчет X и Y
for(L = 1; L <= 12; L = L + 1)
{
U = 1;
V = 0;
EK = E[13-L];
FK = F[13-L];
for(J = 1; J <= FK; J = J + 1)
{
for(I = J; I <= 4096; I = I + EK)
{
O = I + FK - 1;
II = I - 1;
P = X[II] + X[O];
Q = Y[II] + Y[O];
R = X[II] - X[O];
T = Y[II] - Y[O];
X[O] = R * U - T * V;
Y[O] = T * U + R * V;
X[II] = P;
Y[II] = Q;
}
LL = 13 - L;
W = U * C[LL] - V * S[LL];
V = V * C[LL] + U * S[LL];
U = W;
}
}
J = 1;
for(I = 1;I < 4096; I = I + 1)
{
if(I < J)
{
J1 = J - 1;
I1 = I - 1;
P = X[J1];
Q = Y[J1];
X[J1] = X[I1];
Y[J1] = Y[I1];
X[I1] = P;
Y[I1] = Q;
}
K = N >> 1;
while(K < J)
{
J = J - K;
K = K >> 1;
}
J = J + K;
}
// Уточнение коэффициентов БПФ
KL = 2048; // N / 2
K = 2047; // KL - 1
for(base = 2047; base > 0 ; base = base - 1)
{
KOF_L = (unsigned long)(convert_sin() * (sqrt(X[base] * X[base] + Y[base] * Y[base])));
KOF_L = KOF_L >> 11; // деление на KL = 2048
KOF[base] = (unsigned int)KOF_L;
}
KOF[base] = 0;


Сомневаюсь, что помогло.

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

Ответы



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

E-mail: info@telesys.ru