官方淘宝店 易迪拓培训 旧站入口
首页 > 无线通信 > 通信技术学习讨论 > 请问matlab里fft的问题

请问matlab里fft的问题

12-16
我试了一下
输入128位的复值序列data_in
data_out=ifft(data_in,128)
然后
data_chk=fft(data_out,128)
但是data_chk并不等于data_in
这是怎么回事?

fft等于加窗,是输入信号谱与窗函数的卷积,窗不可能完全理想,因此结果存在误差,用这个结果做逆变换是不会得到原始值的...

那OFDM收发端如何通过IFFT和FFT实现恢复?
另外你说信号谱与窗函数卷积,不是很明白
难道不是信号本身直接与窗卷积?

我这边结果是一样的,当然abs(data_in-data_chk)存在1e-16量级的误差了。

你做出来结果完全一样?还是说有误差?
能具体说一下么,谢谢
我要做OFDM收发机
但是现在基本的IFFT和FFT对联输入输出结果都不一致啊

今天又试了试,是不是因为当序列为某些值得时候,计算结果会有精度误差
因此fft 和ifft的计算中不能完全恢复原始序列
如果给序列值加上round是不是就好了?
或者不用管,ifft----fft之后恢复的序列虽然有误差
但是很小,再解映射的时候不会影响对bit序列的恢复
不理会就行?

matlab很奇怪
A+jB 和(A+m*e-16)+j(B+n*e-16)
竟然不是很小的-16方级别的数
而显示的是一个4位有效数字没有e-16的一个复数……
再也不敢把x---ifft----fft---y这样的x和y直接相减看差别了……

哦,原来相减的结果最前面统一乘了一个e-16量级的因子……
怎么解决这个问题呢?
x和y在windows里显示的有效数字都一样,但是一减却不为0
或者这一点影响对OFDM的恢复没有影响?

这种精度误差对OFDM解调性能应该是没影响的。 -- 个人经验。
因为我也是在matlab里直接用fft,似乎没有觉察到过对性能的影响。

非常感谢!
只要不影响接收机的检测判断就好~

Top