完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖分为两个部分,一个是用CCS的图形工具,画出仿真信号的时域图,另一部分是相对这个信号进行傅里叶变换的时候遇到的问题。(当然这里面的算法中的命名规则、C的书写方式都不符合C标准,而且现在刚开始还只是考虑算法的实现问题,还没来得及考虑效率的问题) 最近一直在尝试用C编写几个简单的算法,可是一到动手才发现,自己原有的那点C语言基础知识完全不够用,然后去看了看指针,发现还是不行,所以本想自己获得一个信号,然后对其进行傅里叶变换,结果只进行了前面简单的一步,后面的傅里叶变换的算法实在调试通不过。在这里,就让我班门弄下斧,和大家说一下这前面的工作,再来向大家求教一下后面傅里叶变换程序的解决方法,并附上该傅里叶变换的matlab程序(摘自《数字信号处理的MATLAB实现》,科学出版社)。 1、获得一个x=sin(2*pi*t)+0.5*sin(2*pi*5*t)的信号 ①为了使得程序能够顺利运行,应设置堆栈(stack)的大小,这里设置为0x100000,如图1所示 图 1 ②图2为获得x=sin(2*pi*t)+0.5*sin(2*pi*5*t),并且在主函数中调用(图3),其中n为采样点数,dt为采样间隔 图 2 图3 ③在调试后,先查找函数(信号sin_Endd)的指针值,如图4,图形属性设置界面如图5 图 4 图5 ④画出图形如图6 图 6 2、傅里叶变换算法,贴上a[k],b[k],c[k]的代码,注意以下代码并不能实现需要的傅里叶变换,主要问题是:为什么得到的a[k]和b[k]均为0,贴出来是希望哪位能够指正以下。 #define N 256 #defin #define PF(x) ((x)*(x)) double *compute_ak() { int n=256; float dt=0.02; double *a=(double *)malloc(128*sizeof(double)); int k,j; int h; for(h=0;h<128;h++) { a[h]=0.0; } double *sin_ak=(sin_fun(n,dt)); for(k=0;k<128;k++) { for(j=0;j<256;j++) { a[k]=a[k]+(sin_ak[j])*(2/N)*cos(2*pi*k*j/N); } } return a; } double *compute_bk() { int n=256; float dt=0.02; double *b=(double *)malloc(128*sizeof(double)); int k,j; double *sin_bk=(sin_fun(n,dt)); int h; for(h=0;h<128;h++) { b[h]=0.0; } for(k=0;k<128;k++) { for(j=0;j b[k]=b[k]+(sin_bk[j])*(2/N)*sin(2*pi*k*j/N); } } return b; } double *compute_ck() { double *c=(double *)malloc(128*sizeof(double)); double *a=compute_ak(); double *b=compute_bk(); int k; for(k=0;k c[k]=sqrt(PF(a[k])+PF(b[k])); } return c; } 3、上述希望得到的c即为经傅里叶变换后所得到的谱值(由于a和b均为0,得到的c也为0)。 附MATLAB的傅里叶变换程序以及效果图 |
|
相关推荐
2个回答
|
|
你可以在Ti官网下载DSPLIB库,里面有两个FFT的库函数。
DSPF_sp_fftSPxSP和DSPF_sp_fftSPxSP_cn 一个是经过优化的库函数,一个是没有经过优化的C程序两个输出是一样的,运行时间不一样。 |
|
|
|
沈士杰 发表于 2015-10-31 22:20 恩,那个我知道,我就想看看我用的指针出了什么问题,一直不得其解 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
3237 浏览 0 评论
790 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
3670 浏览 0 评论
4431 浏览 1 评论
1371 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 23:31 , Processed in 0.711550 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号