梁工 发表于 2023-12-25 18:08:58

qizhiguang 发表于 2023-12-25 16:33
感觉很神奇,很漂亮。比第一版好多了

谢谢认可!我们一直在努力进步!

lzl1okOK 发表于 2023-12-27 12:38:19

好厉害,一直想学可惜苦于没有教程,感谢感谢{:4_174:}

jackfangxq 发表于 2024-1-10 19:36:18

漂亮

jackfangxq 发表于 2024-1-10 19:36:24

漂亮

860816108 发表于 2024-4-10 08:54:08

//采样存储序列表(倒序)        FFT 256点反序十进制:
const unsigned charLIST_TAB = {
   0, 128,64, 192,32, 160,96, 224,16, 144,80, 208,48, 176, 112, 240,
   8, 136,72, 200,40, 168, 104, 232,24, 152,88, 216,56, 184, 120, 248,
   4, 132,68, 196,36, 164, 100, 228,20, 148,84, 212,52, 180, 116, 244,
12, 140,76, 204,44, 172, 108, 236,28, 156,92, 220,60, 188, 124, 252,
   2, 130,66, 194,34, 162,98, 226,18, 146,82, 210,50, 178, 114, 242,
10, 138,74, 202,42, 170, 106, 234,26, 154,90, 218,58, 186, 122, 250,
   6, 134,70, 198,38, 166, 102, 230,22, 150,86, 214,54, 182, 118, 246,
14, 142,78, 206,46, 174, 110, 238,30, 158,94, 222,62, 190, 126, 254,
   1, 129,65, 193,33, 161,97, 225,17, 145,81, 209,49, 177, 113, 241,
   9, 137,73, 201,41, 169, 105, 233,25, 153,89, 217,57, 185, 121, 249,
   5, 133,69, 197,37, 165, 101, 229,21, 149,85, 213,53, 181, 117, 245,
13, 141,77, 205,45, 173, 109, 237,29, 157,93, 221,61, 189, 125, 253,
   3, 131,67, 195,35, 163,99, 227,19, 147,83, 211,51, 179, 115, 243,
11, 139,75, 203,43, 171, 107, 235,27, 155,91, 219,59, 187, 123, 251,
   7, 135,71, 199,39, 167, 103, 231,23, 151,87, 215,55, 183, 119, 247,
15, 143,79, 207,47, 175, 111, 239,31, 159,95, 223,63, 191, 127, 255
};

梁专家,您好,这里我想改为32点的怎么改???
谢谢

梁工 发表于 2024-4-10 09:50:25

860816108 发表于 2024-4-10 08:54
//采样存储序列表(倒序)        FFT 256点反序十进制:
const unsigned charLIST_TAB = {
   0, 128,64, 1 ...

这是某个早期版本,并不能保证其是正常的,我基本不用点数少的FFT。

//计算余弦用的表,放大了127倍(32点FFT时用)
int code COS_TABLE=
{
127,125,117,106,90,71,49,25,0,-25,-49,-71,-90,-106,-117,-125
};

//计算正弦用的表,放大了127倍(32点FFT时用)
int code SIN_TABLE=
{
0,25,49,71,90,106,117,125,127,125,117,106,90,71,49,25
};


//采样存储序列表(倒序)        FFT 32点反序十进制:
u8 code LIST_TAB = {
   0,16,   8,24,   4,20,12,28,   2,18,10,26,   6,22,14,30,
   1,17,   9,25,   5,21,13,29,   3,19,11,27,   7,23,15,31,
};


/********************************************************************
函数功能:进行FFT运算。
入口参数:pIn:输入数据的缓冲区;
          pRe:保存实部的缓冲区;
                  pIm:保存虚部的缓冲区。
返    回:无。
备    注:在调用该函数之前应该调用FftInput函数对数据进行倒序处理。
********************************************************************/

void FftExe(int *pIn, int *pRe, int *pIm)
{
        u8        i,j;
        u8        BlockSize;        //64点的可以使用8位变量, 最大值是128
        int        tr,ti;
        u8        OffSet1,OffSet2;
        long        c,s;                //必须是long型, 否则溢出

        //先计算2点的
        for(j=0; j<LENGTH; j+=2)
        {
                tr       = pIn;
                pRe = (pIn - tr);
                pIm = 0;
                pRe   = (pIn + tr);
                pIm   = 0;
        }

        for(BlockSize=4; BlockSize<=LENGTH; BlockSize<<=1) //再一层层计算
        {
                for(j=0; j<LENGTH; j+=BlockSize)
                {
                        for(i=0; i<BlockSize/2; i++)
                        {
                                OffSet1 = LENGTH/BlockSize * i;
                                c = (long)COS_TABLE;
                                s = (long)SIN_TABLE;

                                OffSet1 = i + j;
                                OffSet2 = OffSet1 + BlockSize/2;
                                tr = (c*pRe + s*pIm) >> 7;
                                ti = (c*pIm - s*pRe) >> 7;

                                pRe = (pRe - tr) >> 1;        //对结果归一化处理,则每次运算要除以2
                                pIm = (pIm - ti) >> 1;
                                pRe = (pRe + tr) >> 1;
                                pIm = (pIm + ti) >> 1;
                        }
                }
        }
        pRe = pRe >> 1;
        pIm = pIm >> 1;
}

pursuing 发表于 2024-7-11 08:41:20

强!!做深了,都得靠数学啊!{:4_174:}

梁工 发表于 2024-7-11 09:16:45

pursuing 发表于 2024-7-11 08:41
强!!做深了,都得靠数学啊!

是啊,哪怕简单的东西,比如有源滤波、数字滤波,都是数学。
记得网上有人建议小学生不要学数学和英语,呵呵!

zcw0707 发表于 2024-8-11 17:05:55

也是深有感触:到最后还是要靠数学!
页: 1 2 3 [4]
查看完整版本: FFT频谱分析-视频讲解, USB-CDC虚拟串口送电脑显示