Mercurial > hg > segmenter-vamp-plugin
annotate armadillo-3.900.4/include/armadillo_bits/op_median_bones.hpp @ 49:1ec0e2823891
Switch to using subrepo copies of qm-dsp, nnls-chroma, vamp-plugin-sdk; update Armadillo version; assume build without external BLAS/LAPACK
author | Chris Cannam |
---|---|
date | Thu, 13 Jun 2013 10:25:24 +0100 |
parents | |
children |
rev | line source |
---|---|
Chris@49 | 1 // Copyright (C) 2009-2012 NICTA (www.nicta.com.au) |
Chris@49 | 2 // Copyright (C) 2009-2012 Conrad Sanderson |
Chris@49 | 3 // |
Chris@49 | 4 // This Source Code Form is subject to the terms of the Mozilla Public |
Chris@49 | 5 // License, v. 2.0. If a copy of the MPL was not distributed with this |
Chris@49 | 6 // file, You can obtain one at http://mozilla.org/MPL/2.0/. |
Chris@49 | 7 |
Chris@49 | 8 |
Chris@49 | 9 //! \addtogroup op_median |
Chris@49 | 10 //! @{ |
Chris@49 | 11 |
Chris@49 | 12 |
Chris@49 | 13 template<typename T> |
Chris@49 | 14 struct arma_cx_median_packet |
Chris@49 | 15 { |
Chris@49 | 16 T val; |
Chris@49 | 17 uword index; |
Chris@49 | 18 }; |
Chris@49 | 19 |
Chris@49 | 20 |
Chris@49 | 21 |
Chris@49 | 22 template<typename T> |
Chris@49 | 23 arma_inline |
Chris@49 | 24 bool |
Chris@49 | 25 operator< (const arma_cx_median_packet<T>& A, const arma_cx_median_packet<T>& B) |
Chris@49 | 26 { |
Chris@49 | 27 return A.val < B.val; |
Chris@49 | 28 } |
Chris@49 | 29 |
Chris@49 | 30 |
Chris@49 | 31 |
Chris@49 | 32 //! Class for finding median values of a matrix |
Chris@49 | 33 class op_median |
Chris@49 | 34 { |
Chris@49 | 35 public: |
Chris@49 | 36 |
Chris@49 | 37 template<typename T1> |
Chris@49 | 38 inline static void apply(Mat<typename T1::elem_type>& out, const Op<T1,op_median>& in); |
Chris@49 | 39 |
Chris@49 | 40 template<typename T, typename T1> |
Chris@49 | 41 inline static void apply(Mat< std::complex<T> >& out, const Op<T1,op_median>& in); |
Chris@49 | 42 |
Chris@49 | 43 // |
Chris@49 | 44 // |
Chris@49 | 45 |
Chris@49 | 46 template<typename T1> |
Chris@49 | 47 inline static typename T1::elem_type median_vec(const T1& X, const typename arma_not_cx<typename T1::elem_type>::result* junk = 0); |
Chris@49 | 48 |
Chris@49 | 49 template<typename T1> |
Chris@49 | 50 inline static typename T1::elem_type median_vec(const T1& X, const typename arma_cx_only<typename T1::elem_type>::result* junk = 0); |
Chris@49 | 51 |
Chris@49 | 52 // |
Chris@49 | 53 // |
Chris@49 | 54 |
Chris@49 | 55 template<typename eT> |
Chris@49 | 56 inline static eT direct_median(std::vector<eT>& X); |
Chris@49 | 57 |
Chris@49 | 58 template<typename T> |
Chris@49 | 59 inline static void direct_cx_median_index(uword& out_index1, uword& out_index2, std::vector< arma_cx_median_packet<T> >& X); |
Chris@49 | 60 }; |
Chris@49 | 61 |
Chris@49 | 62 |
Chris@49 | 63 |
Chris@49 | 64 //! @} |