test_fft.cxx
来自「InsightToolkit-1.4.0(有大量的优化算法程序)」· CXX 代码 · 共 67 行
CXX
67 行
// This is vxl/vnl/tests/test_fft.cxx
/*
fsm
*/
#include <vcl_iostream.h>
#include <vnl/vnl_vector.h>
#include <vnl/vnl_matrix.h>
#include <vnl/vnl_matlab_print.h>
#include <vnl/algo/vnl_fft_1d.h>
#include <vnl/algo/vnl_fft_2d.h>
#include <testlib/testlib_test.h>
#include "test_util.h"
void test_fft_1d(unsigned int N)
{
vnl_vector<vcl_complex<double> > signal(N);
test_util_fill_random(signal.begin(), signal.end());
vnl_fft_1d<double> fft(N);
vnl_vector<vcl_complex<double> > tmp = signal;
vnl_matlab_print(vcl_cout, tmp, "tmp");
fft.fwd_transform(tmp);
vnl_matlab_print(vcl_cout, tmp, "tmp");
fft.bwd_transform(tmp); tmp /= N;
vnl_matlab_print(vcl_cout, tmp, "tmp");
double err = (tmp - signal).two_norm();
vcl_cout << "err = " << err << vcl_endl;
testlib_test_assert_near("test fwd-bwd", err, 0.0, 1e-10);
}
void test_fft_2d(unsigned int M, unsigned int N)
{
vnl_matrix<vcl_complex<double> > signal(M, N);
test_util_fill_random(signal.begin(), signal.end());
vnl_fft_2d<double> fft(M, N);
vnl_matrix<vcl_complex<double> > tmp = signal;
vnl_matlab_print(vcl_cout, tmp, "tmp");
fft.fwd_transform(tmp);
vnl_matlab_print(vcl_cout, tmp, "tmp");
fft.bwd_transform(tmp); tmp /= (M*N);
vnl_matlab_print(vcl_cout, tmp, "tmp");
double err = (tmp - signal).fro_norm();
vcl_cout << "err = " << err << vcl_endl;
testlib_test_assert_near("test fwd-bwd", err, 0.0, 1e-10);
}
void test_fft()
{
test_fft_1d(24);
test_fft_2d(25, 30);
}
TESTMAIN (test_fft);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?