op_resize_meat.hpp
Go to the documentation of this file.
1 // Copyright (C) 2011 NICTA (www.nicta.com.au)
2 // Copyright (C) 2011 Conrad Sanderson
3 //
4 // This file is part of the Armadillo C++ library.
5 // It is provided without any warranty of fitness
6 // for any purpose. You can redistribute this file
7 // and/or modify it under the terms of the GNU
8 // Lesser General Public License (LGPL) as published
9 // by the Free Software Foundation, either version 3
10 // of the License or (at your option) any later version.
11 // (see http://www.opensource.org/licenses for more info)
12 
13 
14 
17 
18 
19 
20 template<typename T1>
21 inline
22 void
24  {
26 
27  typedef typename T1::elem_type eT;
28 
29  const uword out_n_rows = in.aux_uword_a;
30  const uword out_n_cols = in.aux_uword_b;
31 
32  const unwrap<T1> tmp(in.m);
33  const Mat<eT>& A = tmp.M;
34 
35  const uword A_n_rows = A.n_rows;
36  const uword A_n_cols = A.n_cols;
37 
38  Mat<eT> B;
39 
40  const bool alias = (&actual_out == &A);
41 
42  Mat<eT>& out = alias ? B : actual_out;
43 
44  out.set_size(out_n_rows, out_n_cols);
45 
46  if( (out_n_rows > A_n_rows) || (out_n_cols > A_n_cols) )
47  {
48  out.zeros();
49  }
50 
51  if( (out.n_elem > 0) && (A.n_elem > 0) )
52  {
53  const uword end_row = (std::min)(out_n_rows, A_n_rows) - 1;
54  const uword end_col = (std::min)(out_n_cols, A_n_cols) - 1;
55 
56  out.submat(0, 0, end_row, end_col) = A.submat(0, 0, end_row, end_col);
57  }
58 
59  if(alias)
60  {
61  actual_out.steal_mem(B);
62  }
63 
64  }
65 
66 
67 
68 template<typename T1>
69 inline
70 void
72  {
74 
75  typedef typename T1::elem_type eT;
76 
77  const uword out_n_rows = in.aux_uword_a;
78  const uword out_n_cols = in.aux_uword_b;
79  const uword out_n_slices = in.aux_uword_c;
80 
81  const unwrap_cube<T1> tmp(in.m);
82  const Cube<eT>& A = tmp.M;
83 
84  const uword A_n_rows = A.n_rows;
85  const uword A_n_cols = A.n_cols;
86  const uword A_n_slices = A.n_slices;
87 
88  Cube<eT> B;
89 
90  const bool alias = (&actual_out == &A);
91 
92  Cube<eT>& out = alias ? B : actual_out;
93 
94  out.set_size(out_n_rows, out_n_cols, out_n_slices);
95 
96  if( (out_n_rows > A_n_rows) || (out_n_cols > A_n_cols) || (out_n_slices > A_n_slices) )
97  {
98  out.zeros();
99  }
100 
101  if( (out.n_elem > 0) && (A.n_elem > 0) )
102  {
103  const uword end_row = (std::min)(out_n_rows, A_n_rows) - 1;
104  const uword end_col = (std::min)(out_n_cols, A_n_cols) - 1;
105  const uword end_slice = (std::min)(out_n_slices, A_n_slices) - 1;
106 
107  out.subcube(0, 0, 0, end_row, end_col, end_slice) = A.subcube(0, 0, 0, end_row, end_col, end_slice);
108  }
109 
110  if(alias)
111  {
112  actual_out.steal_mem(B);
113  }
114 
115  }
116 
117 
118 
const Cube & zeros()
Definition: Cube_meat.hpp:2481
void set_size(const uword in_elem)
change the matrix to have user specified dimensions (data is not preserved)
Definition: Mat_meat.hpp:4211
arma_inline subview_cube< eT > subcube(const uword in_row1, const uword in_col1, const uword in_slice1, const uword in_row2, const uword in_col2, const uword in_slice2)
creation of subview_cube (generic subcube)
Definition: Cube_meat.hpp:876
void steal_mem(Mat &X)
Definition: Mat_meat.hpp:630
arma_aligned uword aux_uword_b
storage of auxiliary data, uword format
arma_inline subview< eT > submat(const uword in_row1, const uword in_col1, const uword in_row2, const uword in_col2)
creation of subview (submatrix)
Definition: Mat_meat.hpp:2092
arma_aligned uword aux_uword_c
storage of auxiliary data, uword format
void set_size(const uword in_rows, const uword in_cols, const uword in_slices)
change the cube to have user specified dimensions (data is not preserved)
Definition: Cube_meat.hpp:2414
const uword n_cols
number of columns in the matrix (read-only)
Definition: Mat_bones.hpp:30
arma_aligned uword aux_uword_b
storage of auxiliary data, uword format
Definition: Op_bones.hpp:48
const uword n_elem
number of elements in the matrix (read-only)
Definition: Mat_bones.hpp:31
const uword n_rows
number of rows in the matrix (read-only)
Definition: Mat_bones.hpp:29
void steal_mem(Cube &X)
Definition: Cube_meat.hpp:310
arma_aligned const T1 & m
storage of reference to the operand (eg. a matrix)
Definition: Op_bones.hpp:45
arma_inline const Op< T1, op_min > min(const Base< typename T1::elem_type, T1 > &X, const uword dim=0)
Delayed &#39;minimum values&#39; operation. The dimension, along which the minima are found, is set via &#39;dim&#39;. For dim = 0, the minimum value of each column is found (i.e. searches by traversing across rows). For dim = 1, the minimum value of each row is found (i.e. searches by traversing across columns). The default is dim = 0.
Definition: fn_min.hpp:27
u32 uword
Definition: typedef.hpp:85
const uword n_cols
number of columns in each slice (read-only)
Definition: Cube_bones.hpp:38
const Mat< eT > M
Definition: unwrap.hpp:32
Dense cube class.
Definition: Cube_bones.hpp:30
static void apply(Mat< typename T1::elem_type > &out, const Op< T1, op_resize > &in)
#define arma_extra_debug_sigprint
Definition: debug.hpp:1116
Analog of the Op class, intended for cubes.
arma_aligned uword aux_uword_a
storage of auxiliary data, uword format
arma_aligned const T1 & m
storage of reference to the operand (e.g. a cube)
const uword n_elem
number of elements in the cube (read-only)
Definition: Cube_bones.hpp:41
Dense matrix class.
const Mat & zeros()
Definition: Mat_meat.hpp:4331
const Cube< eT > M
Definition: unwrap_cube.hpp:33
arma_aligned uword aux_uword_a
storage of auxiliary data, uword format
Definition: Op_bones.hpp:47
const uword n_slices
number of slices in the cube (read-only)
Definition: Cube_bones.hpp:40
const uword n_rows
number of rows in each slice (read-only)
Definition: Cube_bones.hpp:37


armadillo_matrix
Author(s):
autogenerated on Fri Apr 16 2021 02:31:58