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 
620 AFAPI array medfilt(const array& in, const dim_t wind_length = 3, const dim_t wind_width = 3, const borderType edge_pad = AF_PAD_ZERO);
621 
622 #if AF_API_VERSION >= 34
623 
636 AFAPI array medfilt1(const array& in, const dim_t wind_width = 3, const borderType edge_pad = AF_PAD_ZERO);
637 #endif
638 
639 #if AF_API_VERSION >= 34
640 
654 AFAPI array medfilt2(const array& in, const dim_t wind_length = 3, const dim_t wind_width = 3, const borderType edge_pad = AF_PAD_ZERO);
655 #endif
656 
657 #if AF_API_VERSION >= 35
658 
666 AFAPI void setFFTPlanCacheSize(size_t cacheSize);
667 #endif
668 
669 }
670 #endif
671 
672 #ifdef __cplusplus
673 extern "C" {
674 #endif
675 
690 AFAPI af_err af_approx1(af_array *out, const af_array in, const af_array pos,
691  const af_interp_type method, const float offGrid);
692 
708 AFAPI af_err af_approx2(af_array *out, const af_array in, const af_array pos0, const af_array pos1,
709  const af_interp_type method, const float offGrid);
710 
723 AFAPI af_err af_fft(af_array *out, const af_array in, const double norm_factor, const dim_t odim0);
724 
725 #if AF_API_VERSION >= 31
726 
738 AFAPI af_err af_fft_inplace(af_array in, const double norm_factor);
739 #endif
740 
754 AFAPI af_err af_fft2(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1);
755 
756 #if AF_API_VERSION >= 31
757 
769 AFAPI af_err af_fft2_inplace(af_array in, const double norm_factor);
770 #endif
771 
786 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);
787 
788 #if AF_API_VERSION >= 31
789 
801 AFAPI af_err af_fft3_inplace(af_array in, const double norm_factor);
802 #endif
803 
816 AFAPI af_err af_ifft(af_array *out, const af_array in, const double norm_factor, const dim_t odim0);
817 
818 #if AF_API_VERSION >= 31
819 
831 AFAPI af_err af_ifft_inplace(af_array in, const double norm_factor);
832 #endif
833 
847 AFAPI af_err af_ifft2(af_array *out, const af_array in, const double norm_factor, const dim_t odim0, const dim_t odim1);
848 
849 #if AF_API_VERSION >= 31
850 
862 AFAPI af_err af_ifft2_inplace(af_array in, const double norm_factor);
863 #endif
864 
879 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);
880 
881 #if AF_API_VERSION >= 31
882 
894 AFAPI af_err af_ifft3_inplace(af_array in, const double norm_factor);
895 #endif
896 
897 #if AF_API_VERSION >= 31
898 
912 AFAPI af_err af_fft_r2c (af_array *out, const af_array in, const double norm_factor, const dim_t pad0);
913 #endif
914 
915 #if AF_API_VERSION >= 31
916 
931 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);
932 #endif
933 
934 #if AF_API_VERSION >= 31
935 
951 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);
952 #endif
953 
954 #if AF_API_VERSION >= 31
955 
970 AFAPI af_err af_fft_c2r (af_array *out, const af_array in, const double norm_factor, const bool is_odd);
971 #endif
972 
973 #if AF_API_VERSION >= 31
974 
988 AFAPI af_err af_fft2_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd);
989 #endif
990 
991 #if AF_API_VERSION >= 31
992 
1006 AFAPI af_err af_fft3_c2r(af_array *out, const af_array in, const double norm_factor, const bool is_odd);
1007 #endif
1008 
1024 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);
1025 
1041 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);
1042 
1058 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);
1059 
1076 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);
1077 
1090 AFAPI af_err af_fft_convolve1(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode);
1091 
1104 AFAPI af_err af_fft_convolve2(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode);
1105 
1118 AFAPI af_err af_fft_convolve3(af_array *out, const af_array signal, const af_array filter, const af_conv_mode mode);
1119 
1129 AFAPI af_err af_fir(af_array *y, const af_array b, const af_array x);
1130 
1143 AFAPI af_err af_iir(af_array *y, const af_array b, const af_array a, const af_array x);
1144 
1159  AFAPI af_err af_medfilt(af_array *out, const af_array in, const dim_t wind_length, const dim_t wind_width, const af_border_type edge_pad);
1160 
1161 #if AF_API_VERSION >= 34
1162 
1175  AFAPI af_err af_medfilt1(af_array *out, const af_array in, const dim_t wind_width, const af_border_type edge_pad);
1176 #endif
1177 
1178 #if AF_API_VERSION >= 34
1179 
1193  AFAPI af_err af_medfilt2(af_array *out, const af_array in, const dim_t wind_length, const dim_t wind_width, const af_border_type edge_pad);
1194 #endif
1195 
1196 
1197 #if AF_API_VERSION >= 34
1198 
1208 AFAPI af_err af_set_fft_plan_cache_size(size_t cache_size);
1209 #endif
1210 
1211 #ifdef __cplusplus
1212 }
1213 #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.
AFAPI array medfilt1(const array &in, const dim_t wind_width=3, const borderType edge_pad=AF_PAD_ZERO)
C++ Interface for median filter.
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.
af_border_type
Definition: defines.h:248
AFAPI af_err af_set_fft_plan_cache_size(size_t cache_size)
C Interface for setting plan cache size.
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:277
AFAPI array fftConvolve1(const array &signal, const array &filter, const convMode mode=AF_CONV_DEFAULT)
C++ Interface for convolution on one dimensional signals.
AFAPI void setFFTPlanCacheSize(size_t cacheSize)
C++ Interface for setting plan cache size.
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_medfilt(af_array *out, const af_array in, const dim_t wind_length, const dim_t wind_width, const af_border_type edge_pad)
C Interface for median filter.
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 af_err af_medfilt1(af_array *out, const af_array in, const dim_t wind_width, const af_border_type edge_pad)
C Interface for 1D median filter.
AFAPI array iir(const array &b, const array &a, const array &x)
C++ Interface for infinite impulse response filter.
AFAPI af_err af_medfilt2(af_array *out, const af_array in, const dim_t wind_length, const dim_t wind_width, const af_border_type edge_pad)
C Interface for median 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:285
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.
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:272
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.
Out of bound values are 0.
Definition: defines.h:252
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:286
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:478
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.
af_border_type borderType
Definition: defines.h:471
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.
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:327
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 medfilt(const array &in, const dim_t wind_length=3, const dim_t wind_width=3, const borderType edge_pad=AF_PAD_ZERO)
C++ Interface for median filter.
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.
AFAPI array medfilt2(const array &in, const dim_t wind_length=3, const dim_t wind_width=3, const borderType edge_pad=AF_PAD_ZERO)
C++ Interface for median filter.
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:470
af_conv_mode convMode
Definition: defines.h:477
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.