Страница 3 из 6
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 12:04
Santik
На вход АЦП подаю синус, на выходе DAC его же вижу без искажений.
А это по большому счёту мало о чём говорит
Может у АЦП и ЦАП одинаковый формат - целые без знака?
Про выравнивание - скорее это надо во входной массив надо добавить нулей до ближайщего 2^M.
Т.е. если бы у вас на входе было бы 60 значений, надо было бы добавить 4 нуля.
Странно вообще получается. Точка 32 выходного вектора БПФ - это фактически частота Найквиста=4кГц...
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 12:13
Santik
Так я не понял, массив _buff[schet] как комплексный или как действительный в программе описан?
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 12:43
Андрей33
Santik писал(а):Так я не понял, массив _buff[schet] как комплексный или как действительный в программе описан?
Код: Выделить всё
#pragma DATA_SECTION(_buff,"_BUFF");
DATA _buff[128];
DATA Тип данных размера short, 16-разрядное число
представляющее число в формате Q15. Рекомендуется
использование типа DATA вместо типа short для
портируемости кода.
Четные значения я пишу из АЦП, нечетные нулями заполняю.
Формат АЦП - знаковый 16 бит(дополнительный код)
Так выглядит массив _buff, полученный с АЦП при подаче на него синуса 1к, перед функцией cbrev:
Код: Выделить всё
-4647; 0;
1717; 0;
5157; 0;
3303; 0;
-2080; 0;
-7953; 0;
-11070; 0;
-8974; 0;
-3461; 0;
2711; 0;
5225; 0;
2441; 0;
-3216; 0;
-8878; 0;
-11068; 0;
-8150; 0;
-2251; 0;
3565; 0;
5053; 0;
1497; 0;
-4373; 0;
-9695; 0;
-10846; 0;
-7202; 0;
-1021; 0;
4257; 0;
4741; 0;
499; 0;
-5490; 0;
-10333; 0;
-10471; 0;
-6173; 0;
169; 0;
4772; 0;
4217; 0;
-597; 0;
-6580; 0;
-10771; 0;
-9902; 0;
-5064; 0;
1350; 0;
5105; 0;
3559; 0;
-1697; 0;
-7613; 0;
-11010; 0;
-9224; 0;
-3908; 0;
2351; 0;
5209; 0;
2739; 0;
-2832; 0;
-8575; 0;
-11068; 0;
-8440; 0;
-2685; 0;
3254; 0;
5111; 0;
1820; 0;
-3989; 0;
-9442; 0;
-10922; 0;
-7538; 0;
-1472; 0;
после cbrev:
Код: Выделить всё
-4647; 0;
169; 0;
-2251; 0;
2351; 0;
-3461; 0;
1350; 0;
-1021; 0;
3254; 0;
-2080; 0;
-6580; 0;
-4373; 0;
-8575; 0;
-3216; 0;
-7613; 0;
-5490; 0;
-9442; 0;
5157; 0;
4217; 0;
5053; 0;
2739; 0;
5225; 0;
3559; 0;
4741; 0;
1820; 0;
-11070; 0;
-9902; 0;
-10846; 0;
-8440; 0;
-11068; 0;
-9224; 0;
-10471; 0;
-7538; 0;
1717; 0;
4772; 0;
3565; 0;
5209; 0;
2711; 0;
5105; 0;
4257; 0;
5111; 0;
-7953; 0;
-10771; 0;
-9695; 0;
-11068; 0;
-8878; 0;
-11010; 0;
-10333; 0;
-10922; 0;
3303; 0;
-597; 0;
1497; 0;
-2832; 0;
2441; 0;
-1697; 0;
499; 0;
-3989; 0;
-8974; 0;
-5064; 0;
-7202; 0;
-2685; 0;
-8150; 0;
-3908; 0;
-6173; 0;
-1472; 0;
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 13:55
Santik
cbrev(_buff,_buff,64);-она делает реверсию адресов отдельно для четных и нечетных элементов массива, на выходе 128 значений получается.
Но на выходе все нечётные по-прежнему =0?
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 13:57
Андрей33
Santik писал(а):cbrev(_buff,_buff,64);-она делает реверсию адресов отдельно для четных и нечетных элементов массива, на выходе 128 значений получается.
Но на выходе все нечётные по-прежнему =0?
Да
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 14:35
Santik
Ну вот у этого сигала очень большая постоянная составляющая -2982.
На выходе БПФ на 1 значении тоже должен быть локальный максимум.
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 14:42
Андрей33
Santik писал(а):Ну вот у этого сигала очень большая постоянная составляющая -2982.
На выходе БПФ на 1 значении тоже должен быть локальный максимум.
да, на нулевом значении всегда постоянный пик.
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 14:55
Santik
А не пытались с этими данными спектр получить в какой-нибудь другой программе?
Потому что близко к истине:
При подаче с генератора на вход АЦП синуса 1000Гц, вижу пики после БПФ в точках: 16; 48.
Оп-па - это я ошибся - точки 16;48 - это 2000Гц
Код: Выделить всё
N F, Гц
1 0
2 125
3 250
4 375
5 500
6 625
7 750
8 875
9 1000
10 1125
11 1250
12 1375
13 1500
14 1625
15 1750
16 1875
17 2000
18 2125
19 2250
20 2375
21 2500
22 2625
23 2750
24 2875
25 3000
26 3125
27 3250
28 3375
29 3500
30 3625
31 3750
32 3875
33 4000
34 -125
35 -250
36 -375
37 -500
38 -625
39 -750
40 -875
41 -1000
42 -1125
43 -1250
44 -1375
45 -1500
46 -1625
47 -1750
48 -1875
49 -2000
50 -2125
51 -2250
52 -2375
53 -2500
54 -2625
55 -2750
56 -2875
57 -3000
58 -3125
59 -3250
60 -3375
61 -3500
62 -3625
63 -3750
64 -3875
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 15:03
Андрей33
значения после cfft:
Код: Выделить всё
-2984; 0;
-82; 172;
-72; 67;
-70; 28;
-71; 0;
-70; -29;
-72; -68;
-82;-173;
673;0;
-82;172;
-72;67;
-70;28;
-71;0;
-70;-29;
-72;-68;
-82;-173;
-88;0;
-82;172;
-72;67;
-70;28;
-71;0;
-70;-29;
-72;-68;
-82;-173;
673;0;
-82;172;
-72;67;
-70;28;
-71;0;
-70;-29;
-72;-68;
-82;-173;
-71; 0;
-82; 172;
... дальше симметрично
Re: FFT, Интерпретация результата преобразования
Добавлено: 02 окт 2015, 15:06
Андрей33
Santik писал(а):А не пытались с этими данными спектр получить в какой-нибудь другой программе?
Потому что близко к истине:
При подаче с генератора на вход АЦП синуса 1000Гц, вижу пики после БПФ в точках: 16; 48.
попробую их в другой процессор засунуть, где библиотека обкатана уже, позже отпишусь.