summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/matrix/matrix_conv_abstract.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 13:19:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-03-09 13:20:02 +0000
commit58daab21cd043e1dc37024a7f99b396788372918 (patch)
tree96771e43bb69f7c1c2b0b4f7374cb74d7866d0cb /ml/dlib/dlib/matrix/matrix_conv_abstract.h
parentReleasing debian version 1.43.2-1. (diff)
downloadnetdata-58daab21cd043e1dc37024a7f99b396788372918.tar.xz
netdata-58daab21cd043e1dc37024a7f99b396788372918.zip
Merging upstream version 1.44.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ml/dlib/dlib/matrix/matrix_conv_abstract.h')
-rw-r--r--ml/dlib/dlib/matrix/matrix_conv_abstract.h158
1 files changed, 158 insertions, 0 deletions
diff --git a/ml/dlib/dlib/matrix/matrix_conv_abstract.h b/ml/dlib/dlib/matrix/matrix_conv_abstract.h
new file mode 100644
index 000000000..b342f2668
--- /dev/null
+++ b/ml/dlib/dlib/matrix/matrix_conv_abstract.h
@@ -0,0 +1,158 @@
+// Copyright (C) 2011 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#undef DLIB_MATRIx_CONV_ABSTRACT_Hh_
+#ifdef DLIB_MATRIx_CONV_ABSTRACT_Hh_
+
+#include "matrix_abstract.h"
+
+namespace dlib
+{
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp conv (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ ensures
+ - returns a matrix R such that:
+ - R is the convolution of m1 with m2. In particular, this function is
+ equivalent to performing the following in matlab: R = conv2(m1,m2).
+ - R::type == the same type that was in m1 and m2.
+ - R.nr() == m1.nr()+m2.nr()-1
+ - R.nc() == m1.nc()+m2.nc()-1
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp xcorr (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ ensures
+ - returns a matrix R such that:
+ - R is the cross-correlation of m1 with m2. In particular, this
+ function returns conv(m1,flip(m2)) if the matrices contain real
+ elements and conv(m1,flip(conj(m2))) if they are complex.
+ - R::type == the same type that was in m1 and m2.
+ - R.nr() == m1.nr()+m2.nr()-1
+ - R.nc() == m1.nc()+m2.nc()-1
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp xcorr_fft (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ - m1 and m2 contain real or complex values and must be double, float, or long
+ double valued. (e.g. not integers)
+ ensures
+ - This function is identical to xcorr() except that it uses a fast Fourier
+ transform to do the convolution and is therefore much faster when both m1 and
+ m2 are large.
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp conv_same (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ ensures
+ - returns a matrix R such that:
+ - R is the convolution of m1 with m2. In particular, this function is
+ equivalent to performing the following in matlab: R = conv2(m1,m2,'same').
+ In particular, this means the result will have the same dimensions as m1 and will
+ contain the central part of the full convolution. Therefore, conv_same(m1,m2) is
+ equivalent to subm(conv(m1,m2), m2.nr()/2, m2.nc()/2, m1.nr(), m1.nc()).
+ - R::type == the same type that was in m1 and m2.
+ - R.nr() == m1.nr()
+ - R.nc() == m1.nc()
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp xcorr_same (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ ensures
+ - returns a matrix R such that:
+ - R is the cross-correlation of m1 with m2. In particular, this
+ function returns conv_same(m1,flip(m2)) if the matrices contain real
+ elements and conv_same(m1,flip(conj(m2))) if they are complex.
+ - R::type == the same type that was in m1 and m2.
+ - R.nr() == m1.nr()
+ - R.nc() == m1.nc()
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp conv_valid (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ ensures
+ - returns a matrix R such that:
+ - R is the convolution of m1 with m2. In particular, this function is
+ equivalent to performing the following in matlab: R = conv2(m1,m2,'valid').
+ In particular, this means only elements of the convolution which don't require
+ zero padding are included in the result.
+ - R::type == the same type that was in m1 and m2.
+ - if (m1 has larger dimensions than m2) then
+ - R.nr() == m1.nr()-m2.nr()+1
+ - R.nc() == m1.nc()-m2.nc()+1
+ - else
+ - R.nr() == 0
+ - R.nc() == 0
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+ const matrix_exp xcorr_valid (
+ const matrix_exp& m1,
+ const matrix_exp& m2
+ );
+ /*!
+ requires
+ - m1 and m2 both contain elements of the same type
+ ensures
+ - returns a matrix R such that:
+ - R is the cross-correlation of m1 with m2. In particular, this
+ function returns conv_valid(m1,flip(m2)) if the matrices contain real
+ elements and conv_valid(m1,flip(conj(m2))) if they are complex.
+ - R::type == the same type that was in m1 and m2.
+ - if (m1 has larger dimensions than m2) then
+ - R.nr() == m1.nr()-m2.nr()+1
+ - R.nc() == m1.nc()-m2.nc()+1
+ - else
+ - R.nr() == 0
+ - R.nc() == 0
+ !*/
+
+// ----------------------------------------------------------------------------------------
+
+}
+
+#endif // DLIB_MATRIx_CONV_ABSTRACT_Hh_
+
+