signal.h
Go to the documentation of this file.
1 /*******************************************************
2  * Copyright (c) 2014, ArrayFire
3  * All rights reserved.
4  *
5  * This file is distributed under 3-clause BSD license.
6  * The complete license agreement can be obtained at:
7  * http://arrayfire.com/licenses/BSD-3-Clause
8  ********************************************************/
9 
10 #pragma once
11 #include <af/defines.h>
12 
13 #ifdef __cplusplus
14 
15 namespace af
16 {
17 class array;
18 class dim4;
19 
32 AFAPI array approx1(const array &in, const array &pos,
33  const interpType method = AF_INTERP_LINEAR, const float offGrid = 0.0f);
34 
48 AFAPI array approx2(const array &in, const array &pos0, const array &pos1,
49  const interpType method = AF_INTERP_LINEAR, const float offGrid = 0.0f);
50 
61 AFAPI array fftNorm(const array& in, const double norm_factor, const dim_t odim0=0);
62 
74 AFAPI array fft2Norm(const array& in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0);
75 
88 AFAPI array fft3Norm(const array& in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0);
89 
90 #if AF_API_VERSION >= 31
91 
101 AFAPI void fftInPlace(array& in, const double norm_factor = 1);
102 #endif
103 
104 #if AF_API_VERSION >= 31
105 
116 AFAPI void fft2InPlace(array& in, const double norm_factor = 1);
117 #endif
118 
119 #if AF_API_VERSION >= 31
120 
131 AFAPI void fft3InPlace(array& in, const double norm_factor = 1);
132 #endif
133 
146 AFAPI array fft(const array& in, const dim_t odim0=0);
147 
161 AFAPI array fft2(const array& in, const dim_t odim0=0, const dim_t odim1=0);
162 
177 AFAPI array fft3(const array& in, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0);
178 
189 AFAPI array dft(const array& in, const double norm_factor, const dim4 outDims);
190 
203 AFAPI array dft(const array& in, const dim4 outDims);
204 
216 AFAPI array dft(const array& in);
217 
228 AFAPI array ifftNorm(const array& in, const double norm_factor, const dim_t odim0=0);
229 
241 AFAPI array ifft2Norm(const array& in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0);
242 
255 AFAPI array ifft3Norm(const array& in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0);
256 
257 #if AF_API_VERSION >= 31
258 
268 AFAPI void ifftInPlace(array& in, const double norm_factor = 1);
269 #endif
270 
271 #if AF_API_VERSION >= 31
272 
283 AFAPI void ifft2InPlace(array& in, const double norm_factor = 1);
284 #endif
285 
286 #if AF_API_VERSION >= 31
287 
298 AFAPI void ifft3InPlace(array& in, const double norm_factor = 1);
299 #endif
300 
313 AFAPI array ifft(const array& in, const dim_t odim0=0);
314 
328 AFAPI array ifft2(const array& in, const dim_t odim0=0, const dim_t odim1=0);
329 
344 AFAPI array ifft3(const array& in, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0);
345 
356 AFAPI array idft(const array& in, const double norm_factor, const dim4 outDims);
357 
370 AFAPI array idft(const array& in, const dim4 outDims);
371 
383 AFAPI array idft(const array& in);
384 
385 #if AF_API_VERSION >= 31
386 
398 template<int rank>
399 array fftR2C(const array &in,
400  const dim4& dims,
401  const double norm_factor = 0);
402 #endif
403 
404 #if AF_API_VERSION >= 31
405 
416 template<int rank>
417 array fftR2C(const array &in,
418  const double norm_factor = 0);
419 #endif
420 
421 #if AF_API_VERSION >= 31
422 
434 template<int rank>
435 array fftC2R(const array &in, bool is_odd = false,
436  const double norm_factor = 0);
437 #endif
438 
461 AFAPI array convolve(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO);
462 
480 AFAPI array convolve(const array& col_filter, const array& row_filter, const array& signal, const convMode mode=AF_CONV_DEFAULT);
481 
497 AFAPI array convolve1(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO);
498 
514 AFAPI array convolve2(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO);
515 
531 AFAPI array convolve3(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO);
532 
543 AFAPI array fftConvolve(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT);
544 
555 AFAPI array fftConvolve1(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT);
556 
567 AFAPI array fftConvolve2(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT);
568 
579 AFAPI array fftConvolve3(const array& signal, const array& filter, const convMode mode=AF_CONV_DEFAULT);
580 
590 AFAPI array fir(const array &b, const array &x);
591 
604 AFAPI array iir(const array &b, const array &a, const array &x);
605 
606 }
607 #endif
608 
609 #ifdef __cplusplus
610 extern "C" {
611 #endif
612 
627 AFAPI af_err af_approx1(af_array *out, const af_array in, const af_array pos,
628  const af_interp_type method, const float offGrid);
629 
645 AFAPI af_err af_approx2(af_array *out, const af_array in, const af_array pos0, const af_array pos1,
646  const af_interp_type method, const float offGrid);
647 
660 AFAPI af_err af_fft(af_array *out, const af_array in, const double norm_factor, const dim_t odim0);
661 
662 #if AF_API_VERSION >= 31
663 
675 AFAPI af_err af_fft_inplace(af_array in, const double norm_factor);
676 #endif
677 
691 AFAPI af_err af_fft2(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1);
692 
693 #if AF_API_VERSION >= 31
694 
706 AFAPI af_err af_fft2_inplace(af_array in, const double norm_factor);
707 #endif
708 
723 AFAPI af_err af_fft3(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1, const dim_t odim2);
724 
725 #if AF_API_VERSION >= 31
726 
738 AFAPI af_err af_fft3_inplace(af_array in, const double norm_factor);
739 #endif
740 
753 AFAPI af_err af_ifft(af_array *out, const af_array in, const double norm_factor, const dim_t odim0);
754 
755 #if AF_API_VERSION >= 31
756 
768 AFAPI af_err af_ifft_inplace(af_array in, const double norm_factor);
769 #endif
770 
784 AFAPI af_err af_ifft2(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1);
785 
786 #if AF_API_VERSION >= 31
787 
799 AFAPI af_err af_ifft2_inplace(af_array in, const double norm_factor);
800 #endif
801 
816 AFAPI af_err af_ifft3(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1, const dim_t odim2);
817 
818 #if AF_API_VERSION >= 31
819 
831 AFAPI af_err af_ifft3_inplace(af_array in, const double norm_factor);
832 #endif
833 
834 #if AF_API_VERSION >= 31
835 
849 AFAPI af_err af_fft_r2c (af_array *out, const af_array in, const double norm_factor, const dim_t pad0);
850 #endif
851 
852 #if AF_API_VERSION >= 31
853 
868 AFAPI af_err af_fft2_r2c(af_array *out, const af_array in, const double norm_factor, const dim_t pad0, const dim_t pad1);
869 #endif
870 
871 #if AF_API_VERSION >= 31
872 
888 AFAPI af_err af_fft3_r2c(af_array *out, const af_array in, const double norm_factor, const dim_t pad0, const dim_t pad1, const dim_t pad2);
889 #endif
890 
891 #if AF_API_VERSION >= 31
892 
907 AFAPI af_err af_fft_c2r (af_array *out, const af_array in, const double norm_factor, const bool is_odd);
908 #endif
909 
910 #if AF_API_VERSION >= 31
911 
925 AFAPI af_err af_fft2_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd);
926 #endif
927 
928 #if AF_API_VERSION >= 31
929 
943 AFAPI af_err af_fft3_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd);
944 #endif
945 
961 AFAPI af_err af_convolve1(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode, af_conv_domain domain);
962 
978 AFAPI af_err af_convolve2(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode, af_conv_domain domain);
979 
995 AFAPI af_err af_convolve3(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode, af_conv_domain domain);
996 
1013 AFAPI af_err af_convolve2_sep(af_array *out, const af_array col_filter, const af_array row_filter, const af_array signal, const af_conv_mode mode);
1014 
1027 AFAPI af_err af_fft_convolve1(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode);
1028 
1041 AFAPI af_err af_fft_convolve2(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode);
1042 
1055 AFAPI af_err af_fft_convolve3(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode);
1056 
1066 AFAPI af_err af_fir(af_array *y, const af_array b, const af_array x);
1067 
1080 AFAPI af_err af_iir(af_array *y, const af_array b, const af_array a, const af_array x);
1081 #ifdef __cplusplus
1082 }
1083 #endif
AFAPI af_err af_fft_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd)
C Interface for complex to real fast fourier transform for one dimensional signals.
AFAPI array fftConvolve2(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT)
C++ Interface for convolution on two dimensional signals.
AFAPI array fftConvolve(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT)
C++ Interface for FFT-based convolution any(one through three) dimensional signals.
Linear Interpolation.
Definition: defines.h:226
Definition: algorithm.h:14
AFAPI af_err af_ifft_inplace(af_array in, const double norm_factor)
C Interface for fast fourier transform on one dimensional signals.
array fftC2R(const array &in, bool is_odd=false, const double norm_factor=0)
C++ Interface for complex to real fast fourier transform.
AFAPI af_err af_approx2(af_array *out, const af_array in, const af_array pos0, const af_array pos1, const af_interp_type method, const float offGrid)
C Interface for signals interpolation on two dimensional signals.
AFAPI array convolve(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO)
C++ Interface for convolution any(one through three) dimensional signals.
AFAPI array fft2(const array &in, const dim_t odim0=0, const dim_t odim1=0)
C++ Interface for fast fourier transform on two dimensional signals.
AFAPI af_err af_ifft2_inplace(af_array in, const double norm_factor)
C Interface for fast fourier transform on two dimensional signals.
AFAPI void fft3InPlace(array &in, const double norm_factor=1)
C++ Interface for fast fourier transform on three dimensional signals.
AFAPI af_err af_fft2_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd)
C Interface for complex to real fast fourier transform for two dimensional signals.
AFAPI array fftConvolve3(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT)
C++ Interface for convolution on three dimensional signals.
AFAPI array fft3Norm(const array &in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0)
C++ Interface for fast fourier transform on three dimensional signals.
Output of the convolution is the same size as input.
Definition: defines.h:261
AFAPI array fftConvolve1(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT)
C++ Interface for convolution on one dimensional signals.
AFAPI af_err af_ifft3_inplace(af_array in, const double norm_factor)
C Interface for fast fourier transform on three dimensional signals.
AFAPI af_err af_fft_convolve2(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode)
C Interface for FFT-based convolution on two dimensional signals.
AFAPI af_err af_fft_convolve1(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode)
C Interface for FFT-based convolution on one dimensional signals.
AFAPI array iir(const array &b, const array &a, const array &x)
C++ Interface for infinite impulse response filter.
AFAPI array fft(const array &in, const dim_t odim0=0)
C++ Interface for fast fourier transform on one dimensional signals.
AFAPI array approx1(const array &in, const array &pos, const interpType method=AF_INTERP_LINEAR, const float offGrid=0.0f)
C++ Interface for data interpolation on one dimensional signals.
af_interp_type
Definition: defines.h:224
AFAPI void ifft2InPlace(array &in, const double norm_factor=1)
C++ Interface for fast fourier transform on two dimensional signals.
AFAPI array convolve3(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO)
C++ Interface for convolution on three dimensional signals.
AFAPI af_err af_fft3(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1, const dim_t odim2)
C Interface for fast fourier transform on three dimensional signals.
af_conv_domain
Definition: defines.h:269
AFAPI af_err af_fft(af_array *out, const af_array in, const double norm_factor, const dim_t odim0)
C Interface for fast fourier transform on one dimensional signals.
static af::array array(af::dim4 idims, cl_mem buf, af::dtype type, bool retain=false)
Create an af::array object from an OpenCL cl_mem buffer.
Definition: opencl.h:329
AFAPI array fir(const array &b, const array &x)
C++ Interface for finite impulse response filter.
AFAPI void ifft3InPlace(array &in, const double norm_factor=1)
C++ Interface for fast fourier transform on three dimensional signals.
array fftR2C(const array &in, const dim4 &dims, const double norm_factor=0)
C++ Interface for real to complex fast fourier transform for one dimensional signals.
AFAPI array convolve2(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO)
C++ Interface for convolution on two dimensional signals.
AFAPI array dft(const array &in, const double norm_factor, const dim4 outDims)
C++ Interface for fast fourier transform on any(1d, 2d, 3d) dimensional signals.
af_err
Definition: defines.h:63
AFAPI af_err af_fft2_r2c(af_array *out, const af_array in, const double norm_factor, const dim_t pad0, const dim_t pad1)
C Interface for real to complex fast fourier transform for two dimensional signals.
AFAPI array ifft(const array &in, const dim_t odim0=0)
C++ Interface for inverse fast fourier transform on one dimensional signals.
AFAPI array ifft3Norm(const array &in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0)
C++ Interface for inverse fast fourier transform on three dimensional signals.
AFAPI af_err af_fft3_inplace(af_array in, const double norm_factor)
C Interface for fast fourier transform on three dimensional signals.
AFAPI array ifftNorm(const array &in, const double norm_factor, const dim_t odim0=0)
C++ Interface for inverse fast fourier transform on one dimensional signals.
AFAPI array convolve1(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT, const convDomain domain=AF_CONV_AUTO)
C++ Interface for convolution on one dimensional signals.
af_conv_mode
Definition: defines.h:256
AFAPI array fft3(const array &in, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0)
C++ Interface for fast fourier transform on three dimensional signals.
AFAPI array idft(const array &in, const double norm_factor, const dim4 outDims)
C++ Interface for inverse fast fourier transform on any(1d, 2d, 3d) dimensional signals.
AFAPI af_err af_fft2(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1)
C Interface for fast fourier transform on two dimensional signals.
long long dim_t
Definition: defines.h:50
ArrayFire automatically picks the right convolution algorithm.
Definition: defines.h:270
AFAPI af_err af_convolve2(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode, af_conv_domain domain)
C Interface for convolution on two dimensional signals.
AFAPI af_err af_ifft(af_array *out, const af_array in, const double norm_factor, const dim_t odim0)
C Interface for inverse fast fourier transform on one dimensional signals.
af_conv_domain convDomain
Definition: defines.h:410
AFAPI array fft2Norm(const array &in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0)
C++ Interface for fast fourier transform on two dimensional signals.
AFAPI af_err af_ifft3(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1, const dim_t odim2)
C Interface for inverse fast fourier transform on three dimensional signals.
#define AFAPI
Definition: defines.h:31
AFAPI array ifft2Norm(const array &in, const double norm_factor, const dim_t odim0=0, const dim_t odim1=0)
C++ Interface for inverse fast fourier transform on two dimensional signals.
AFAPI af_err af_ifft2(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1)
C Interface for inverse fast fourier transform on two dimensional signals.
AFAPI af_err af_fft_inplace(af_array in, const double norm_factor)
C Interface for fast fourier transform on one dimensional signals.
AFAPI af_err af_fft3_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd)
C Interface for complex to real fast fourier transform for three dimensional signals.
AFAPI af_err af_fft_r2c(af_array *out, const af_array in, const double norm_factor, const dim_t pad0)
C Interface for real to complex fast fourier transform for one dimensional signals.
AFAPI array ifft2(const array &in, const dim_t odim0=0, const dim_t odim1=0)
C++ Interface for inverse fast fourier transform on two dimensional signals.
AFAPI af_err af_convolve3(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode, af_conv_domain domain)
C Interface for convolution on three dimensional signals.
AFAPI af_err af_iir(af_array *y, const af_array b, const af_array a, const af_array x)
C++ Interface for infinite impulse response filter.
AFAPI af_err af_fft2_inplace(af_array in, const double norm_factor)
C Interface for fast fourier transform on two dimensional signals.
AFAPI array fftNorm(const array &in, const double norm_factor, const dim_t odim0=0)
C++ Interface for fast fourier transform on one dimensional signals.
AFAPI af_err af_approx1(af_array *out, const af_array in, const af_array pos, const af_interp_type method, const float offGrid)
C Interface for signals interpolation on one dimensional signals.
AFAPI af_err af_fft_convolve3(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode)
C Interface for FFT-based convolution on three dimensional signals.
AFAPI af_err af_convolve1(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode, af_conv_domain domain)
C Interface for convolution on one dimensional signals.
AFAPI af_err af_fir(af_array *y, const af_array b, const af_array x)
C++ Interface for finite impulse response filter.
AFAPI void ifftInPlace(array &in, const double norm_factor=1)
C++ Interface for fast fourier transform on one dimensional signals.
void * af_array
Definition: defines.h:222
AFAPI array ifft3(const array &in, const dim_t odim0=0, const dim_t odim1=0, const dim_t odim2=0)
C++ Interface for inverse fast fourier transform on three dimensional signals.
AFAPI array approx2(const array &in, const array &pos0, const array &pos1, const interpType method=AF_INTERP_LINEAR, const float offGrid=0.0f)
C++ Interface for data interpolation on two dimensional signals.
AFAPI array filter(const array &image, const array &kernel)
Image Filtering.
af_interp_type interpType
Definition: defines.h:402
af_conv_mode convMode
Definition: defines.h:409
AFAPI void fft2InPlace(array &in, const double norm_factor=1)
C++ Interface for fast fourier transform on two dimensional signals.
AFAPI af_err af_convolve2_sep(af_array *out, const af_array col_filter, const af_array row_filter, const af_array signal, const af_conv_mode mode)
C Interface for separable convolution on two dimensional signals.
AFAPI void fftInPlace(array &in, const double norm_factor=1)
C++ Interface for fast fourier transform on one dimensional signals.
AFAPI af_err af_fft3_r2c(af_array *out, const af_array in, const double norm_factor, const dim_t pad0, const dim_t pad1, const dim_t pad2)
C Interface for real to complex fast fourier transform for three dimensional signals.