下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、快速傅立叶算法的语言实现#include math.hvoid kfft(pr,pi,n,k,fr,fi,l,il)int n,k,l,il;double pr,pi,fr,fi; int it,m,is,i,j,nv,l0;double p,q,s,vr,vi,poddr,poddi;for (it=0; it=n-1; it+) m=it; is=0;for (i=0; i=k-1; i+) j=m/2; is=2*is+(m-2*j); m=j; frit=pris; fiit=piis;pr0=1.0; pi0=0.0; p=6.283185306/(1.0*n); pr1=cos(p
2、); pi1=-sin(p);if (l!=0) pi1=-pi1;for (i=2; i=n-1; i+) p=pri-1*pr1; q=pii-1*pi1; s=(pri-1+pii-1)*(pr1+pi1); pri=p-q; pii=s-p-q;for (it=0; it=0; l0-) m=m/2; nv=2*nv;for (it=0; it=(m-1)*nv; it=it+nv) for (j=0; j=(nv/2)-1; j+) p=prm*j*frit+j+nv/2; q=pim*j*fiit+j+nv/2; s=prm*j+pim*j; s=s*(frit+j+nv/2+fi
3、it+j+nv/2); poddr=p-q; poddi=s-p-q; frit+j+nv/2=frit+j-poddr; fiit+j+nv/2=fiit+j-poddi; frit+j=frit+j+poddr; fiit+j=fiit+j+poddi;if (l!=0)for (i=0; i=n-1; i+) fri=fri/(1.0*n);fii=fii/(1.0*n);if (il!=0)for (i=0; i=n-1; i+) pri=sqrt(fri*fri+fii*fii);if (fabs(fri)0) pii=90.0;else pii=-90.0;elsepii=atan
4、(fii/fri)*360.0/6.283185306;return;这是在 PIC18F458 里用的 FFT 程序/* * 函 数 名:void ADCHD()* 功能描述 :单通道高频采样 ,数据处理 ,显示 .*/void ADCHD()long D,SHU; / 数据 .int n_x,k_x,i; / 循环参数 .float Ur,Ui,Urn,Uin; / 数据处理中间变量 . ADWORDS=ADCAN+7; / 确定 MAX197 控制字 . for(ADD=0;ADD64;ADD+) / 采样 .OUTADC(ADWORDS); / 送控制字 .DELAY(0); / 延时
5、 .DA TA0ADD=INADC(); / 读取数据 . for(ADD=0;ADD64;ADD+) / 显示波形 .D=(int)(40.0*DATA0ADD/4096.0); / 取数据 .LCDPIEX(ADD+64,40-D); / 显示 .for(n_x=0;n_x5;n_x+) / 计算 .Urn=0.0; / 实部 .Uin=0.0; / 虚部 .for(k_x=0;k_x32;k_x+) /n_x 次谐波 .D=DATA0k_x; / 取数据计算 .Urn=Urn+D/409.6*cos(2*n_x+1)*(k_x+1)*0.196);Uin=Uin+D/409.6*sin(
6、2*n_x+1)*(k_x+1)*0.196); Ur=Urn/16.0; /Ui=Uin/16.0; /SHU=(long)(100*sqrt(Ur*Ur+Ui*Ui);UI0n_x=SHU; / 第 n_x 次谐波幅值 .UI05=SHU*SHU+UI05; /UI05=(long)sqrt(UI05); / 总幅值 . for(i=0;i5;i+) /SHU=UI0i*1000; /SHU=SHU/(UI05); /UP0i=SHU; / 第 i 次谐波占有率 . SHU=1000*(UI05-UI00); /UP05=SHU/UI05;/畸变率 .LCDCLEAN(12,2,126,7
7、); / 清除数据显示区 . for(i=0;i6;i+)OUTNUM(UI0i,1,28,2+i); / 显示幅值 .OUTNUM(UP0i,3,56,2+i); / 显示占有率 . ADWORDS=ADCAN; / 还原控制字 .* 函 数 名:void XBFX()* 功能描述 : 全周波傅立叶积分计算各次谐波的幅值,并返回结果 void XBFX()long D,SHU; / 数据 . int n_x,k_x,i,n; / 循环参数 .float Ur,Ui,Urn,Uin,UIL2; / 数据处理中间变量 for(n=0;n2;n+) / 两路信号 .for(n_x=0;n_x5;n
8、_x+) / 计算 .Urn=0.0; / 实部 .Uin=0.0; / 虚部 . for(k_x=0;k_x32;k_x+) /n_x 次谐波 .D=DATACHAN*2+nk_x; / 取数据计算 . Urn=Urn+D/409.6*cos(2*n_x+1)*(k_x+1)*0.196);Uin=Uin+D/409.6*sin(2*n_x+1)*(k_x+1)*0.196); Ur=Urn/16.0; /Ui=Uin/16.0; SHU=(long)(760*sqrt(Ur*Ur+Ui*Ui); / UInn_x=SHU; /UIn5=SHU*SHU+UIn5; / 第 n_x 次谐波幅值 if(n_x=0)UILn=atan(Ui/Ur);/相位 . UIn5=(long)sqrt(UIn5); / 总幅值 . for(i=0;i5;i+) /SHU=UIni*1000; /SHU=SHU/(UIn5); /UPni=SHU; / 第 i 次谐波占有率 . SHU=1000*(UIn5-UIn0); / UPn5=SHU/UIn5;/畸变率 .功率因数角 LCHAN=abs(long)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新员工个人工作汇报范文7篇
- 关于“耀中华书香伴我行”演讲稿(15篇)
- 初一学生自我介绍范文(五篇)
- 普通财务个人述职报告10篇范文
- 感谢老师的感谢信模板汇编五篇
- 新学期的计划范文6篇
- 宣传委员竞选演讲稿3篇
- 小学五年级语文教学工作总结5篇
- 如何建设微课程设计
- 材料成形课程设计绪论
- 仪器设备损坏、故障、改装或维修记录表
- 部编版语文一年级上册第二单元大单元作业设计
- You-can-play-football-well-课件(省一等奖)
- 各级医疗机构(医院)更年期保健特色专科评估标准
- 神经系统变性病课件
- 学四史之新中国史课件全文
- 古代汉语常用工具书课件
- 汉密尔顿焦虑量表HAMA(14项打印版)
- 部门预算编制培训课件
- 小学人教四年级数学《沏茶问题》课件
- 学校食堂廉政风险责任书
评论
0/150
提交评论