【发布时间】:2013-09-18 16:24:50
【问题描述】:
我正在学习c++中的fftw(替换自定义的fft函数)。在旧代码中,我在 std::vector 样本存储中设计了算法。根据文档,我使用强制转换将 fftw 数据类型与我的数据交互(在 std::vector 中)。
#include <fftw3.h>
#include <vector>
#include <iostream>
#include <complex>
using namespace std;
void main(void)
{
std::vector< complex<double> > x(4);
x[0] = std::complex<double>(0.0, 0.0);
x[1] = std::complex<double>(1.0, 0.0);
x[2] = std::complex<double>(0.0, 2.0);
x[3] = std::complex<double>(3.0, 3.0);
// print the vector, looks good
for (int i=0; i<4; i++)
{
cout << x[i] << endl;
}
// refer fftw datatype to the std::vector by casting
fftw_complex* in = reinterpret_cast<fftw_complex*>(&x[0]);
// print in reference, gives random numbers
for (int i=0; i<4; i++)
{
cout << *in[i*2] << " " << *in[i*2+1] << endl;
}
}
但 in 似乎并没有真正指向正确的位置,而是显示随机数。除了上述问题,我的目的是生成一个包含 8 个元素的向量(示例),前 4 个元素指的是 std::vector 但后四个元素被初始化为某个常量。是否有可能让 *in 指向向量中的第一个,然后指向其他地方的 4 个常量值,所以我可以 fftw “in”?谢谢。
【问题讨论】:
-
我没有理解你的最后一个(第二个)问题。
标签: c++ memory-management fftw