完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想做一个简单的傅里叶变换,只能显示32个给的原始数据,但是无法显示处理后的数据,不知道程序上哪里出错了,请大神看看,怀疑是子程序调用上有问题,请明示~~~坐等~~~ #include "stdio.h"#include "math.h" void dft(x,y,a,b,n,sign); void main() { int i,j,n; double a1,a2,c,c1,c2,d1,d2,q1,q2,w,w1,w2; double x[32],y[32],a[32],b[32]; n=32; a1=0.9; a2=0.3; x[0]=1.0; y[0]=0.0; for(i=1;i x=a1*x[i-1]-a2*y[i-1]; y=a2*x[i-1]+a1*y[i-1]; } printf("n原始数据n"); for(i=0;i for(j=0;j<2;j++) printf(" %10.7f +J %10.7f",x[2*i+j],y[2*i+j]); printf("n"); } q1=x[n-1]; q2=y[n-1]; printf("n傅里叶变换后数据n"); dft(x,y,a,b,n,1); for(i=0;i<2/n;i++) { for(j=0;j<2;j++) printf(" %10.7f +J %10.7f",a[2*i+j],b[2*i+j]); printf("n"); } system("pause"); } /*傅里叶函数*/ void dft(x,y,a,b,n,sign) int n,sign; double x[],y[],a[],b[]; {int i,k; double c,d,q,w,s; q=6.28318530718/n; for(k=0;k a[k]=b[k]=0.0; for(i=0;i c=cos(d); s=sin(d)*sign; a[k]+=c*x+s*y; b[k]+=c*y-s*x; } } if(sign==-1) { c=1.0/n; for(k=0;k b[k]=c*b[k]; } } } |
|
相关推荐
14个回答
|
|
回帖奖励 +1 分积分
你把n附一个初值看看,,,要不然没办法知道你n的值
|
|
|
|
回帖奖励 +1 分积分
我想问一下 当初在学校学过这个傅里叶基数 但是就是不知道这个到底有什么用呀
|
|
|
|
用处挺多,我是信号处理,把信号从时域变到频域,便于分析它的频域特性 |
|
|
|
|
|
|
|
回帖奖励 +1 分积分
加油!!!!!!!!!!!!!!!
|
|
|
|
|
|
|
|
回帖奖励 +1 分积分 |
|
|
|
回帖奖励 +1 分积分
顶一个
|
|
|
|
|
|
c++写的控制台啊
|
|
|
|
加油!!!!!!!!!!
|
|
|
|
还有你的FFT支持多少点的,是哪里的算法,
|
|
|
|
你这程序这么乱,好多语法不对吧
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
640 浏览 0 评论
521 浏览 0 评论
1967 浏览 0 评论
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
3824 浏览 0 评论
847 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-12 07:18 , Processed in 0.971709 second(s), Total 112, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号