3 #include <unsupported/Eigen/FFT> 17 const int nrows = arr.rows();
18 const int ncols = arr.cols();
20 Eigen::FFT< float > fft;
21 Eigen::MatrixXcf matc(nrows, ncols);
23 for (
int irow = 0; irow <
nrows; ++irow) {
24 Eigen::VectorXcf fspec(ncols);
26 Eigen::VectorXf
tmp = arr.row(irow);
28 matc.row(irow) = fspec;
31 for (
int icol = 0; icol < ncols; ++icol) {
32 Eigen::VectorXcf pspec(nrows);
33 fft.fwd(pspec, matc.col(icol));
34 matc.col(icol) = pspec;
42 const int nrows = arr.rows();
43 const int ncols = arr.cols();
45 Eigen::FFT< float > fft;
46 Eigen::MatrixXcf matc(nrows, ncols);
49 for (
int irow = 0; irow <
nrows; ++irow) {
50 Eigen::VectorXcf fspec(ncols);
51 Eigen::VectorXf
tmp = arr.row(irow);
53 matc.row(irow) = fspec;
57 for (
int icol = 0; icol < ncols; ++icol) {
58 Eigen::VectorXcf fspec(nrows);
59 Eigen::VectorXf
tmp = arr.col(icol);
61 matc.col(icol) = fspec;
69 const int nrows = arr.rows();
70 const int ncols = arr.cols();
72 Eigen::FFT< float > fft;
73 Eigen::MatrixXcf matc(nrows, ncols);
78 for (
int irow = 0; irow <
nrows; ++irow) {
79 Eigen::VectorXcf pspec(ncols);
80 fft.fwd(pspec,matc.row(irow));
81 matc.row(irow) = pspec;
85 for (
int icol = 0; icol < ncols; ++icol) {
86 Eigen::VectorXcf pspec(nrows);
87 fft.fwd(pspec, matc.col(icol));
88 matc.col(icol) = pspec;
98 const int nrows = arr.rows();
99 const int ncols = arr.cols();
102 Eigen::MatrixXcf partial(nrows, ncols);
103 partial = arr.matrix();
105 Eigen::FFT< float > fft;
107 for (
int icol = 0; icol < ncols; ++icol) {
108 Eigen::VectorXcf pspec(nrows);
109 fft.inv(pspec, partial.col(icol));
110 partial.col(icol) = pspec;
116 for (
int irow = 0; irow <
nrows; ++irow) {
117 Eigen::VectorXf wave(ncols);
118 fft.inv(wave, partial.row(irow));
119 ret.row(irow) = wave;
127 const int nrows = arr.rows();
128 const int ncols = arr.cols();
131 Eigen::MatrixXcf ret(nrows, ncols);
134 Eigen::FFT< float > fft;
137 for (
int icol = 0; icol < ncols; ++icol) {
138 Eigen::VectorXcf pspec(nrows);
139 fft.inv(pspec, ret.col(icol));
140 ret.col(icol) = pspec;
144 for (
int irow = 0; irow <
nrows; ++irow) {
145 Eigen::VectorXcf pspec(ncols);
146 fft.inv(pspec, ret.row(irow));
147 ret.row(irow) = pspec;
155 const int nrows = arr.rows();
156 const int ncols = arr.cols();
159 Eigen::MatrixXcf partial(nrows, ncols);
160 partial = arr.matrix();
162 Eigen::FFT< float > fft;
167 for (
int irow = 0; irow <
nrows; ++irow) {
168 Eigen::VectorXf wave(ncols);
169 fft.inv(wave, partial.row(irow));
170 ret.row(irow) = wave;
174 for (
int icol = 0; icol < ncols; ++icol) {
175 Eigen::VectorXf wave(nrows);
176 fft.inv(wave, partial.col(icol));
177 ret.col(icol) = wave;
190 const int nrows = arr.rows();
191 const int ncols = arr.cols();
193 Eigen::FFT< float > fft;
195 Eigen::MatrixXcf matc(nrows, ncols);
196 for (
int irow = 0; irow <
nrows; ++irow) {
197 Eigen::VectorXcf fspec(ncols);
199 Eigen::VectorXf
tmp = arr.row(irow);
201 matc.row(irow) = fspec;
204 for (
int icol = 0; icol < ncols; ++icol) {
205 Eigen::VectorXcf pspec(nrows);
206 fft.fwd(pspec, matc.col(icol));
207 matc.col(icol) = pspec;
211 Eigen::MatrixXcf
filt = matc.array() * filter;
213 for (
int icol = 0; icol < ncols; ++icol) {
214 Eigen::VectorXcf pspec(nrows);
215 fft.inv(pspec, filt.col(icol));
216 filt.col(icol) = pspec;
221 for (
int irow = 0; irow <
nrows; ++irow) {
222 Eigen::VectorXf wave(ncols);
223 fft.inv(wave, filt.row(irow));
224 ret.row(irow) = wave;
array_xxc dft_cc(const array_xxc &arr, int dim=1)
array_xxf idft_cr(const array_xxc &arr, int dim=0)
Eigen::ArrayXXcf array_xxc
A complex, 2D array.
array_xxc dft_rc(const array_xxf &arr, int dim=0)
array_xxc idft_cc(const array_xxc &arr, int dim=1)
array_xxf deconv(const array_xxf &arr, const array_xxc &filter)
array_xxf idft(const array_xxc &arr)
unsigned nrows(sqlite3 *db, std::string const &tablename)
array_xxc dft(const array_xxf &arr)
Eigen::ArrayXXf array_xxf
A real, 2D array.