梁工
发表于 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
也是深有感触:到最后还是要靠数学!