[matlab] 请教关于fft ip核输出问题

[复制链接]
 楼主| ldx521 发表于 2012-12-6 20:00 来自手机 | 显示全部楼层 |阅读模式
fft 核输出的结果第一个数不对。我做的是16点fft,输入数据为0+0*j,1+1*j.....15+15*j.matlab仿真的第一个数是120+120*j,但是ip核仿真出的却是296+296*j,其他15个点与matlab仿真相差1。请高手帮帮小弟。还有一个问题是:设置了scale_sch,fft  ip核输出的结果如何与matlab相对应?请大家多多指教。小弟在线等。万分感谢,谢谢
 楼主| ldx521 发表于 2012-12-6 20:27 来自手机 | 显示全部楼层
呼叫猴哥,请猴哥帮忙分钟一下
hawksabre 发表于 2012-12-6 21:22 | 显示全部楼层
不太了解    呵呵   帮你顶一个   希望有高手能够帮忙
hawksabre 发表于 2012-12-6 21:23 | 显示全部楼层
这个牵扯到你对FFT的理解问题。原则上如果不是解析信号,即信号只有实部或者虚部的话,如果只有实部,虚部为0,频谱应当关于y轴对称,如果只有虚部,实部为0,那么频域是关于零点对称。如果是解析信号的话,那么频谱是不对称的。上面说的对称是在数学上分析上是正确的,但在实际的运用中存在一个fft移位的问题。也就是说如果用matlab或者quartus运算fft的话,那么如果不做fft移位的话,那么频率数值上将不会出现负频率,也就是N点fft出现的结果数据是从0~n-1个频点的,没有负数,自然也就部会出现关于y轴或者零点对称。这种结果本身并没有问题,如果你认为错了,那么说明你没有理解fft。做N点fft的话,0~N/2-1是正频率,N/2~N是负频率。所以如果不进行fft移位的话,非解析信号他们的频谱应当是关于N/2点对称或者反对称的。在matlab中可以用fftshift进行移位,在FPGA中就没有这个必要了,知道了数据的含义直接用就可以,移位浪费时间,没有必要。在Quartus 的FFT IP核中,是一个时钟输出一个数据点,所以从source_sop开始,对应的是数据流的顺序就是你的频率点,但它是按时间顺序输出的,不需要将横坐标专门设置。这也是最基本的时频分析的基础。
hawksabre 发表于 2012-12-6 21:23 | 显示全部楼层
你看一下这篇**   不知道对你有没有帮助  呵呵   http://zhidao.baidu.com/question/110620210.html
hawksabre 发表于 2012-12-6 21:26 | 显示全部楼层
找了几篇技术**  希望对你有帮助  呵呵   多多的努力   
hawksabre 发表于 2012-12-6 21:29 | 显示全部楼层
你  自己看一看   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
neufeifatonju 发表于 2012-12-6 21:31 | 显示全部楼层
这么快就结贴了,明白了?你QQ多少,我罗
 楼主| ldx521 发表于 2012-12-6 22:51 | 显示全部楼层
太感谢各位了   谢谢大家了    谢谢
 楼主| ldx521 发表于 2012-12-6 22:51 | 显示全部楼层
我的QQ是  540251841
 楼主| ldx521 发表于 2012-12-6 22:54 | 显示全部楼层
感谢hawksabre  在百忙之中 帮我查找相关资料并给我耐心讲解,谢谢,祝好人一生平安。:handshake:hug:
GoldSunMonkey 发表于 2012-12-6 23:35 | 显示全部楼层
解决了?
13631439419 发表于 2012-12-7 13:47 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:自强不息  传铁人精神

6

主题

97

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部