社区
C++ Builder
帖子详情
求fft算法!!需注解!!
angeling2009
2009-08-18 01:58:05
加精
采集到一组sin数据,求出dft,并计算低于3赫兹的线数。谢谢各位了!!网上的不适用。。
...全文
1449
70
打赏
收藏
求fft算法!!需注解!!
采集到一组sin数据,求出dft,并计算低于3赫兹的线数。谢谢各位了!!网上的不适用。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
70 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rickys2080
2011-05-07
打赏
举报
回复
我这里有一个,自己写的:http://www.jxust3jia1.com/bbs/viewthread.php?tid=10849&extra=page%3D1
angeling2009
2009-09-23
打赏
举报
回复
sin曲线的dft已经实现了 dft是从时域到频域的转换 低于3hz 就是转换为频域后 x(k)所对应的频率值
angeling2009
2009-08-27
打赏
举报
回复
[Quote=引用 3 楼 pengzhiyong1985 的回复:]
#define PI 3.1415926
int FFT_1D(double * y, double * x, int f, int n)
{//y为原始离散信号或者变换后的实部序列,x为原始信号或者变换后的虚部序列
//f=1为傅立叶反变换,f=-1为傅立叶正变换
//n为数据个数,必须为2的整数次幂
int i,i0,i1,j,l1,ns,n1,k;
double s,c,s1,c1,sc,x1,y1,t;
if(fabs(f)!=1.0)
return(-1);
sc=PI;
j=0;
for(i=0;i <n-1;++i)
{
if(i <j)
{
t=x[i];x[i]=x[j];x[j]=t;
t=y[i];y[i]=y[j];y[j]=t;
}
k=n/2;
while(k <=j)
{
j-=k;
k/=2;
}
j=j+k;
}
ns=1;
while(ns <=n/2)
{
c1=cos(sc);s1=sin(f*sc);
c=1.0;s=0.0;
for(l1=0;l1 <ns;++l1)
{
for(i0=l1;i0 <n;i0+=2*ns)
{
i1=i0+ns;
x1=x[i1]*c-y[i1]*s;
y1=y[i1]*c+x[i1]*s;
x[i1]=x[i0]-x1;
y[i1]=y[i0]-y1;
x[i0]+=x1;
y[i0]+=y1;
}
t=c1*c-s1*s;
s=s1*c+c1*s;
c=t;
}
ns*=2;sc/=2.0;
}
if(f <0.0)
{
for(i=0;i <n;++i)
{
x[i]/=(double)n;
y[i]/=(double)n;
}
}
return(0);
//TODO: Add your source code here
}
[/Quote]
单步时,第一个if循环就自己退出了。。。
tiandyoin
2009-08-25
打赏
举报
回复
http://download.csdn.net/source/783300
lhy
2009-08-25
打赏
举报
回复
一句话:楼主先回家看书。
g8613724
2009-08-25
打赏
举报
回复
看不懂...
bigtigerlu
2009-08-24
打赏
举报
回复
不知楼主想用C做,还是Matlab做,采样率0.25,单位是什么。如果是Hz,根本就做不出来;如果是s,4Hz的采样率也做不到3Hz.因为正弦是双谱线,只能分清2Hz到下的频率,上面的频率模糊了;ms也不对,4K有采样率有点大了,做完2048FFT后,一个点的分辨率为1.95Hz。分辨率太低了。我不知你的原始信号频率范围与精度要求,但我想采样率应在几十赫兹到几百赫兹之间比较合适。
另外关于计算,Matlab就不说了,如果用C,网上有开源的FFT计算程序,外国人写的,G一下就可以。我曾经用过很好使,多少点的都可以。
wolcott2387
2009-08-24
打赏
举报
回复
学习
scguest
2009-08-24
打赏
举报
回复
lz还是靠自己的好.
对速度有要求么?要是没有照着书上的算法写就行了,仔细看不难的.
要是对速度有要求,个人的经验是将一些比较固定的结果用宏定义的方式定义好,能不用for就不要用.这样至少能提高一倍的速度~
liumin3285
2009-08-24
打赏
举报
回复
接分!~
songcan123
2009-08-24
打赏
举报
回复
学习
lovetomjerry2005
2009-08-24
打赏
举报
回复
LZ处理的可能是个振动问题,不过没有说清楚,无法提供有效的帮助。
hhwei1985
2009-08-24
打赏
举报
回复
up
Focus_Mark
2009-08-23
打赏
举报
回复
路过。顶了
fabr8
2009-08-23
打赏
举报
回复
都是强人 到这里长知识 以后还要努力学习啊
jarrysong
2009-08-23
打赏
举报
回复
来学习下.
nixiang12
2009-08-23
打赏
举报
回复
mark
zzmoutmans
2009-08-23
打赏
举报
回复
回帖是一种美德!
jokenit
2009-08-22
打赏
举报
回复
路过...
angeling2009
2009-08-22
打赏
举报
回复
小女在这里谢谢大家的支持和热心帮助。。。共同进步。。。
加载更多回复(48)
c to
FFT
(c语言实现
FFT
)
c语言实现
FFT
,内含详细代码,实现
算法
等。有
注解
啊
jiachuangchazhi512.rar_matlab加窗仿真_matlab加窗插值_site:www.pudn.com_加
改程序能够实现加窗插值
FFT
算法
的matlab仿真,已经得到实验验证,
注解
清晰详细,代码可读性强.以512点为例进行仿真计算,对与其他点数,如256或是1024可以通过简单修改即可
AI-Toolbox:
算法
工程师工具箱,用于快速迭代新想法
AI工具箱 介绍
算法
工程师工具箱,用于快速迭代新想法。 该存储库是一个灵活的工具箱,其中包含许多独立的
算法
演示。 它旨在提高工作效率,选择您感兴趣的
算法
演示,并对其进行略微修改以快速验证您的想法。 目前,该项目仍处于起步阶段,主要涵盖图像处理和计算机视觉领域的
算法
,随后将涵盖自然语言处理和机器学习等其他领域的
算法
。 继续更新... AI-Toolbox可视化 这是工具箱中涉及的一些
算法
的可视化。 快速浏览工具箱以查找您感兴趣的
算法
。 所有使用的示例图像仅用于研究目的,如果发生侵权,将立即删除。 玩得开心〜 数字图像处理
FFT
用于图像加密 SIFT配对 选择搜索 没有任何 没有任何 CNN分类 VGG GoogLeNet ResNet 密集网 CNN的应用 人脸识别 没有任何 没有任何 没有任何 没有任何 预处理工具 关键帧提取 数据扩充 资料
注解
图像间谍 没有任
FFT
算法
讲解——麻麻我终于会
FFT
了!
FFT
——快速傅里叶变换 这块不写东西空荡荡的,我决定还是把
FFT
的定义给贴上吧
FFT
(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速
算法
。即为快速傅氏变换。它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的
算法
进行改进获得的。 这三段话其实一点用也没有
FFT
是干什么的
FFT
在
算法
竞赛中就有一个用途:加速多项式乘法 ...
FFT
算法
解析
问题描述两个n次多项式相乘,其时间复杂度为O(n2)O(n^2),通过
FFT
来减小其问题的复杂度。分析过程
FFT
的基本思路是:我知道一个多项式表达式可以根据其表达式算出结果,同理我们也可以根据其结果算出表达式。 对于A,B两个n次多项式,一共所有又2n+1个参数
需
要
求
解,我们至少
需
要2n+1个表达式。
FFT
基本步骤: 选择:选择至少2n+1个点。 计算:分别计算出A(x0),A(x1),...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章