[an error occurred while processing this directive]
|
#define PNT 16
// sin
fract16 inp[PNT] = {0x0000, 0x30FA, 0x5A81, 0x7641,
0x7FFF, 0x7641, 0x5A81, 0x30FA,
0x0000, 0xCF06, 0xA57F, 0x89BF,
0x8000, 0x89BF, 0xA57F, 0xCF06};
complex_fract16 out[PNT];
complex_fract16 tmp[PNT];
complex_fract16 twid[PNT];
int block_exponent;
void main(void)
{
twidfft_fr16(twid, PNT);
rfft_fr16(inp, tmp, out, twid, 1, PNT, &block_exponent, 0);
} // void main(void)
Не могу понять, что выдает библиотечная функуция rfft_fr16.
Входное воздействие - один период синуса в формате 1.15,
соответственно ожидаю, что на выходе будет только одна,
первая не нулевая амплитуда, а получается вот что:
[0] = 3.05176e-005
[1] = 0.986877
[2] = 3.05176e-005
[3] = 0.486816
[4] = 3.05176e-005
[5] = 0.546417
[6] = 3.05176e-005
[7] = 0.166534
т.е. первая гармоника как и ожидалось, но откуда взялись такие
большие 3, 5 и 7 гармоники? Наложение окна не помогает, да оно
тут и не нужно по-моему, поскольку в выборку уместился целый период,
более того, после наложения окна в выходном спектре получается
ещё больше гармоник, амплитуда которых близка к амплитуде основной
гармоники.
E-mail: info@telesys.ru