This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我指的是 C2000Ware FFT 示例。
如果 C2000的 FFT 计算结果与 Matlab 的 FFT 计算结果之间的绝对误差在0.01之内、则认为没有问题。
我想知道为什么认为 FFT 库的计算误差没有问题。
・为什么 FFT 计算结果在 MATLAB 和 C2000之间存在误差?
・您为什么选择绝对误差而不是相对误差?
・为什么要将误差容差设置为0.01 (差值)?
・允许0.01的物理含义是什么?
※:C:\ti\c2000Ware_3_02_00_00\libraries\DSP\FPU\c28\examples\FFT\2837x_CFFT
对于(i = 0;i < 2*CFFT_SIZE;i++){
if (fabs (CFFTgoldenOut[i]- HND_CFFT->CurrentIntr[i])<= Epsilon){
pass ++;
}否则{
FAIL++;
}
}
提前感谢。
您好!
已将您的查询转发给 FFT 专家。 但是 、由于假期、请预计延迟回复至下周二。 感谢您的耐心等待。
此致
Siddharth
您好!
[引用 user6228344"]
・为什么 FFT 计算结果在 MATLAB 和 C2000之间存在误差?
・允许0.01的物理含义是什么?
[/报价]
如果您查看/FPU/c28/source/cfft32.asm 中的文件、您会发现算法使用三角函数、乘法和除法运算、当我们处理 C28x+FPU32 (单精度)上运行的复杂 FFT 算法时、这些算法会始终导致精度损失、从而优先处理高效实时操作。 MATLAB 不在这些限制条件下运行、因此您可以期望 MATLAB 具有更高的精度。
[引用 user6228344"]
・ 您为什么选择绝对误差而不是相对误差?
[/报价]
目的是确定计算值是否在预期值的特定范围内。 因此、绝对误差是这种情况的更好指标。
[引用 user6228344"]
・ 为什么要将误差容差设置为0.01 (差值)?
[/报价]
根据经验选择容差值作为示例预期输出值的百分比。
谢谢、
Shantanu
感谢你的答复。
如果使用 FPU64、我是否会获得与 Matlab 相同的 FFT 计算结果?
此外、请告诉我们使用了何种经验规则来确定容差。
提前感谢。
[引用 user6228344"]
如果使用 FPU64、我是否会获得与 Matlab 相同的 FFT 计算结果?
[/报价]
不、您不会。 所使用的算法大致相同。 您显然会得到更精确的答案、但在精度方面、差别不大。
[引用 user6228344"]
此外、请告诉我们使用了何种经验规则来确定容差。
[/报价]
没有使用具体的经验规则。 选择预期值的百分比(例如5%)是一个问题、具体情况因具体情况而异。
感谢你的答复。
我了解到 FFT 函数会牺牲一定的精度来优先处理时间。