找回密码
 立即注册
楼主: 梁***

FFT频谱分析-视频讲解, USB-CDC虚拟串口送电脑显示

[复制链接]

该用户从未签到

45

主题

2914

回帖

6550

积分

超级版主

积分
6550
 楼主| 发表于 2023-12-25 18:08:58 | 显示全部楼层
qizhiguang 发表于 2023-12-25 16:33
感觉很神奇,很漂亮。比第一版好多了

谢谢认可!我们一直在努力进步!
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 14:06
  • 签到天数: 124 天

    [LV.7]常住居民III

    4

    主题

    235

    回帖

    856

    积分

    高级会员

    积分
    856
    发表于 2023-12-27 12:38:19 | 显示全部楼层
    好厉害,一直想学可惜苦于没有教程,感谢感谢
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 155 天

    [LV.7]常住居民III

    17

    主题

    279

    回帖

    380

    积分

    中级会员

    积分
    380
    发表于 2024-1-10 19:36:18 | 显示全部楼层
    漂亮
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 155 天

    [LV.7]常住居民III

    17

    主题

    279

    回帖

    380

    积分

    中级会员

    积分
    380
    发表于 2024-1-10 19:36:24 | 显示全部楼层
    漂亮
    回复 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    回帖

    31

    积分

    新手上路

    积分
    31
    发表于 2024-4-10 08:54:08 | 显示全部楼层
    //采样存储序列表(倒序)        FFT 256点反序十进制:
    const unsigned char  LIST_TAB[256] = {
       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点的怎么改???
    谢谢

    点评

    这是某个早期版本,并不能保证其是正常的,我基本不用点数少的FFT。 //计算余弦用的表,放大了127倍(32点FFT时用) int code COS_TABLE[LENGTH/2]= { 127,125,117,106,90,71,49,25,0,-25,-49,-71,-90,-106,-117,-125  详情 回复 发表于 2024-4-10 09:50
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    45

    主题

    2914

    回帖

    6550

    积分

    超级版主

    积分
    6550
     楼主| 发表于 2024-4-10 09:50:25 | 显示全部楼层
    860816108 发表于 2024-4-10 08:54
    //采样存储序列表(倒序)        FFT 256点反序十进制:
    const unsigned char  LIST_TAB[256] = {
       0, 128,  64, 1 ...

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

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

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


    //采样存储序列表(倒序)        FFT 32点反序十进制:
    u8 code LIST_TAB[LENGTH] = {
       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[j+1];
                    pRe[j+1] = (pIn[j] - tr);
                    pIm[j+1] = 0;
                    pRe[j]   = (pIn[j] + tr);
                    pIm[j]   = 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[OffSet1];
                                    s = (long)SIN_TABLE[OffSet1];

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

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

    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-28 08:37 , Processed in 0.062109 second(s), 49 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表