STIR 6.4.0
fourier.h
Go to the documentation of this file.
1//
2//
3
12/*
13 Copyright (C) 2003- 2011, Hammersmith Imanet Ltd
14 This file is part of STIR.
15
16 SPDX-License-Identifier: Apache-2.0
17
18 See STIR/LICENSE.txt for details
19*/
20#ifndef __stir_numerics_stir_fourier_h__
21#define __stir_numerics_stir_fourier_h__
24START_NAMESPACE_STIR
25
39template <typename T>
40void fourier(T& c, const int sign = 1);
41// fourier(VectorWithOffset<elemT>& c, const int sign = 1);
42
50template <typename T>
51inline void
52inverse_fourier(T& c, const int sign = 1)
53{
54 fourier(c, -sign);
55#ifdef _MSC_VER
56// disable warning about conversion
57# pragma warning(disable : 4244)
58#endif
59 c /= c.size_all();
60#ifdef _MSC_VER
61// disable warning about conversion
62# pragma warning(default : 4244)
63#endif
64}
65
95template <typename T>
96void fourier_1d(T& c, const int sign);
97
105template <typename T>
106inline void
107inverse_fourier_1d(T& c, const int sign = 1)
108{
109 fourier_1d(c, -sign);
110#ifdef _MSC_VER
111// disable warning about conversion
112# pragma warning(disable : 4244)
113#endif
114 c /= c.size();
115#ifdef _MSC_VER
116# pragma warning(default : 4244)
117#endif
118}
119
153template <typename T>
154Array<1, std::complex<T>> fourier_1d_for_real_data(const Array<1, T>& c, const int sign = 1);
155
163template <typename T>
164Array<1, T> inverse_fourier_1d_for_real_data(const Array<1, std::complex<T>>& c, const int sign = 1);
165
173template <typename T>
174Array<1, T> inverse_fourier_1d_for_real_data_corrupting_input(Array<1, std::complex<T>>& c, const int sign);
175
200template <int num_dimensions, typename T>
201Array<num_dimensions, std::complex<T>> fourier_for_real_data(const Array<num_dimensions, T>& c, const int sign = 1);
202
210template <int num_dimensions, typename T>
211Array<num_dimensions, T> inverse_fourier_for_real_data(const Array<num_dimensions, std::complex<T>>& c, const int sign = 1);
212
220template <int num_dimensions, typename T>
221Array<num_dimensions, T> inverse_fourier_for_real_data_corrupting_input(Array<num_dimensions, std::complex<T>>& c,
222 const int sign = 1);
223
229template <int num_dimensions, typename T>
230Array<num_dimensions, std::complex<T>> pos_frequencies_to_all(const Array<num_dimensions, std::complex<T>>& c);
231
232END_NAMESPACE_STIR
233
234#endif
defines additional numerical operations for arrays of complex numbers
defines the stir::VectorWithOffset class
void inverse_fourier(T &c, const int sign=1)
Compute the inverse of the multi-dimensional discrete fourier transform.
Definition fourier.h:52
void fourier_1d(T &c, const int sign)
Compute one-dimensional discrete fourier transform of an array.
Definition fourier.cxx:65
void fourier(T &c, const int sign=1)
Compute multi-dimensional discrete fourier transform.
Definition fourier.cxx:143
void inverse_fourier_1d(T &c, const int sign=1)
Compute the inverse of the one-dimensional discrete fourier transform.
Definition fourier.h:107