C_and_CPP 板


LINE

我这边有一段FFT程式 可是他规定是只能用256点去跑 请问各位 有没有办法再这段程式的基础上改成可以给定任意点呢? void FFT(double *segment, double **X) { int M = 8 , iN = Dim; int i, j, k, limit_1, limit_2, limit_3, ij, il; double farg, fpi = 3.1415926, fCos, fSin, fbr, fbi, fcr, fci, fx1, fx2; double *fxr = new double[window + 1]; double *fxi = new double[window + 1]; //****************** 将segment[256] => fxr[window] *************// for (i = 1; i <= window; i++) fxr[i] = fxi[i] = 0; //初始化fxr[window], fxi[window] for (i = 1; i <= window; i++) fxr[i] = segment[i - 1]; //将原始信号的256点个值 => fxr[window] // ***************** 傅立叶主程式开始 *************// limit_1 = iN - 1; limit_2 = iN / 2; ij = 1; // **************** 重排输入值 ************// for (i = 1; i <= limit_1; i++) { if ((float) i <= ((float) ij - 0.01)) { fx1 = fxr[ij]; fx2 = fxi[ij]; fxr[ij] = fxr[i]; fxi[ij] = fxi[i]; fxr[i] = fx1; fxi[i] = fx2; } il = limit_2; while(1) { if ((float)il > ((float) (ij) - 0.01)) break; ij -= il; il /=2; } ij += il; } // **************** 傅立叶转换 *************** // for(i = 1; i <= M; i++) // (limit_1, limit_2) =>(1, 256) (2, 128) (4, 64) (8, 32)..(256,1) { limit_1 = (int) pow(2, i - 1); limit_2 = (int) pow(2, (M - i)); for(j = 1; j <= limit_2; j++) //(1:256) (1:128) (1:64)..........(1:1) { for (k = 1; k <= limit_1; k++) { limit_3 = (k - 1) + (j - 1) * 2 * limit_1 + 1; //Odd Points //******************* fbr = fxr[limit_3]; fbi = fxi[limit_3]; fcr = fxr[limit_3 + limit_1]; fci = fxi[limit_3 + limit_1]; //******************* farg = 2.0 * fpi * (k - 1) * limit_2 / iN; fCos = cosl (farg); fSin = sinl (farg); //******************* fx1 = fcr * fCos + fci * fSin ; fx2 = fci * fCos + (0 - fcr) * fSin ; // fxr[limit_3] = fbr + fx1; fxi[limit_3] = fbi + fx2; fxr[limit_3 + limit_1] = fbr - fx1; fxi[limit_3 + limit_1] = fbi - fx2; } } } // for (i = 1; i <= window; i++) { X[0][i - 1] = fxr[i]; X[1][i - 1] = fxi[i]; } //cout << "X[] = " << X[0][0]; delete[] fxr, fxi; } 谢谢各位了!! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.90.193
1F:推 yoco315:我可以先问一下,你希望的数字是多少吗? 03/29 20:14
2F:推 zhi5566:上网随边抓都有现成的CODE 就256 512 1024 最普遍 03/30 00:22
3F:→ weast:我是自己可以找到512 1024的 可是我是要用128~256中间的 03/30 00:23
4F:→ weast:数字阿 ORZ 03/30 00:23
5F:→ weast:目前需要用到192~~ 03/30 22:45
6F:→ dcgkii:FFT没有192的= =也不可能有 把192後面的值补零 补到256 03/31 13:05
7F:→ weast:可是为什麽matlab的FFT可以用任意数去转换呢? 03/31 13:28
8F:→ zhi5566:去看FFT的演算法 你就知道为什麽一定是2^n点 03/31 22:18
9F:推 ohiammatt:想要任意点数就只能跑DFT了吧 04/02 14:23
10F:→ weast:恩 DFT我会写 只是速度太慢了 ORZ 04/02 16:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP