标签: numerical-recipes

《数值食谱》书中的 FFT 示例导致运行时错误

我正在尝试在C 上实现FFT 算法。我根据《C 中的数字食谱》一书中的函数“four1”编写了一段代码。我知道使用 FFTW 等外部库会更有效,但我只是想尝试将此作为第一种方法。但我在运行时遇到错误。

\n

经过一段时间的尝试调试后,我决定复制书中提供的完全相同的功能,但我仍然遇到同样的问题。问题似乎出在以下命令中:

\n
tempr = wr * data[j] - wi * data[j + 1];\ntempi = wr * data[j + 1] + wi * data[j];\n
Run Code Online (Sandbox Code Playgroud)\n

\n
data[j + 1] = data[i + 1] - tempi;\n\n
Run Code Online (Sandbox Code Playgroud)\n

j 有时与数组的最后一个索引一样高,因此在索引时不能加 1。

\n

正如我所说,我没有对代码进行任何更改,所以我很惊讶它对我不起作用;这是一本著名的 C 数值方法参考书,我怀疑其中是否有错误。另外,我发现了一些关于相同代码示例的问题,但它们似乎都没有相同的问题(例如,请参见C: Numerical Recipies (FFT) )。我究竟做错了什么?

\n

这是代码:

\n
#include <iostream>\n#include <stdio.h>\nusing namespace std;\n\n#define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr\nvoid four1(double* data, unsigned long nn, int isign)\n{\n    unsigned long n, mmax, m, j, istep, …
Run Code Online (Sandbox Code Playgroud)

c++ fft numerical-recipes

1
推荐指数
1
解决办法
290
查看次数

标签 统计

c++ ×1

fft ×1

numerical-recipes ×1