声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1392|回复: 3

[FFT] 菜鸟请教一个很简单的关于FFT的问题!怎样用FFT求频率!

[复制链接]
发表于 2009-4-25 00:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
大家好,我是菜鸟,我是学计算机的,但是最近在做一个关于通信的项目,遇到一个很简单的问题,但是我没有多少时间来学习,所以请大家帮帮我吧。非常感谢!

我现在要用FSK做一个数据传输。我现在已经用c 模拟出了一个采样率为44100的sin波,假设我用两个频率对数据编码,f1 and f2, f1 表示 0 and f2 表示 1,得到一组采样数据。 现在我不知道怎样才能解码,因为我完全不懂FFT。我想知道在我用FFT对信号进行 处理以后,怎样才能得到原来的f1和f2。因为我在程序中测试了一下,得到的数据好像没有规则。

这个应该不难,但是我怎样也搞不出来,我在论坛里面搜索了一下,可是还是没有明白……所以希望大家能指点我一下。非常感谢!!!
回复
分享到:

使用道具 举报

发表于 2009-4-25 10:56 | 显示全部楼层
假设信号存在变量X中,共有N个值,采样频率fs
X=abs(fft(x));
plot((1:N/2)*fs/N,X(1:N/)*2/N);
图上有幅值处的x的坐标即你要求的频率了,纵坐标为幅值。

评分

1

查看全部评分

 楼主| 发表于 2009-4-27 15:29 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-18 13:22 编辑
原帖由 shaochongjie 于 2009-4-25 10:56 发表
假设信号存在变量X中,共有N个值,采样频率fs
X=abs(fft(x));
plot((1:N/2)*fs/N,X(1:N/)*2/N);
图上有幅值处的x的坐标即你要求的频率了,纵坐标为幅值。

谢谢回复,这个是在matlab中的计算吧?对不起我不懂matlab, 我想知道如何在c语言中实现你上面说的功能。所以我想知道在信号做完FFT以后的值的物理意义。在一个信号里我有N个采样,每个采样对应一个值,是这个采样的振幅(我想应该就是论坛里说的峰值?),我还知道采样频率是44100HZ,我怎样能根据这些数据计算出这个信号的频率呢?应该是有一个公式吧?对于这一个有N个采样的信号,做完FFT以后我得到的应该是N个值吧?这些值代表的是什么呢?

我比较菜鸟,所以请讲的清楚点!
非常感谢!!
 楼主| 发表于 2009-4-27 23:29 | 显示全部楼层
解决了。
频率应该是 x*fs/N, x是FFT以后的最大值的index。
再次感谢!

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 22:31 , Processed in 0.071631 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表