TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320VC5509A: 调用dsplib中的rfft计算线性调频信号的频谱,结果与matlab不同

Part Number:TMS320VC5509A

有1000点的16位整数数据,

做2048点的fft

matlab结果(没有去掉负频部分)

实部

虚部

dsp结果   (语句:rfft(rcv,2048,NOSCALE);)

手册上说 输出结果是  第一个数的实部、第一个数的虚部、第二个数的实部、第二个数的虚部…..以此类推,并且去除了负频率部分。从图中可以看出第一个频带的位置是正确的,但是第二个频带据应该是多余的,不知道为什么会有。 

求大佬解答Sob

Shine:

请看下面user guide里对rfft函数的说明。 Comparing the results to MATLAB https://www.ti.com/lit/ug/spru422j/spru422j.pdf

,

wang jin:

1.非常感谢您的回答,我也看了您发的手册,并且怀疑与下面这两点有关

2.但是,我又发现:当我把fft点数改为1024时,同一组数据就与matlab上的1024点的fft结果相同了;并且修改做fft的数据后两边依然能得到相同的数据,这是因为什么我也没有想清楚。

3.另外,我尝试修改‘1’中所提到的两点,在cmd文件中做如下改动

(画红线部分位后添加的语句)

但所得结果依然不正确(相比于之前,不应该出现的部分,相对位置向后移动了)

4.同时我也看到有人说:这种情况可能是twiddle table的问题,需要对 “twiddle.asm” 文件进行修改,但是我没太看懂修改方法。

论坛地址In the DspLib example for the rfft the alignment of the twiddle-factor table is only coincidentally right – Processors forum – Processors – TI E2E support forums

然后还有一个相关的文件Microsoft Word – TMS320C5500 DSPLIB库twiddle表对齐的问题.doc (qsl.net)

5.所以我想了解一下依您的经验是如何看待这个问题的。

,

Shine:

wang jin 说:2.但是,我又发现:当我把fft点数改为1024时,同一组数据就与matlab上的1024点的fft结果相同了;并且修改做fft的数据后两边依然能得到相同的数据,这是因为什么我也没有想清楚。

您的意思是只要超过1024点就不正确了?在cfft函数最大支持1024点,请看下面的说明。nx Number of complex elements in vector x. Must be between 8 and 1024.

,

wang jin:

我调用的是rfft函数,手册上说是可以取2048,难道是写错了吗,实际上就是能计算1024点是这样吗

,

wang jin:

然后下面是一组计算结果

原信号

matlab计算结果的实部(只有正频率)

dsp计算结果的实部

dsp绘图参数

,

wang jin:

我试着把rfft换成了rfft32,修改了一下输入数据类型,做2048点的傅里叶变换,结果就与matlab给出的结果相同了。

但是呢,调用函数rfft32会有一个警告,

“#225-D</a>  function declared implicitly”

理论上这是一个严重的问题,但是在这里似乎可以忽略。

,

Shine:

抱歉,看成cfft了。rfft支持2048点的。

“#225-D</a>  function declared implicitly”这个报错信息,请看下面的FAQ。https://software-dl.ti.com/ccs/esd/documents/dmed/HTML/225.html

,

wang jin:

那既然rfft支持2048点的fft,为什么计算1024点的结果是正确的,而2048点就是错误的,这二者在计算时有什么不同吗,是有什么东西被我忽略了吗

,

wang jin:

我想明白了,rfft只能计算1024点的fft,想要计算2048点的fft,这里有一个方法:

2048点FFT在定点DSP上的实现 – 中国知网 (cnki.net)

非常感谢您这几天的帮助!

,

Shine:

不客气~

感谢分享解决方法!

,

wang jin:

还有一点忘了说了,在cmd文件中应该使 .data 段位于 以2000h为起始的一段内存中,应该是和旋转表的位置有关,虽然不太清楚是为什么,但确实是要这样设置。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320VC5509A: 调用dsplib中的rfft计算线性调频信号的频谱,结果与matlab不同
分享到: 更多 (0)