2424 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
2525 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
2626 DEALINGS IN THE SOFTWARE.
27-
27+
2828 Author : Moritz Dannhauer (reimplementation)
2929 Date: August 2017
3030*/
3333#include < Core/Datatypes/DenseMatrix.h>
3434#include < Core/Datatypes/SparseRowMatrix.h>
3535#include < Core/Datatypes/SparseRowMatrixFromMap.h>
36- #include < Core/Datatypes/Legacy/Matrix/MatrixOperations.h>
3736#include < Core/Algorithms/Base/AlgorithmVariableNames.h>
3837#include < Core/Datatypes/MatrixTypeConversions.h>
3938#include < Eigen/Sparse>
@@ -58,16 +57,16 @@ bool AppendMatrixAlgorithm::check_dimensions(const Matrix& mat1, const Matrix& m
5857 if (cols_m1!=cols_m2) return false ;
5958 } else
6059 if (rows_m1!=rows_m2) return false ;
61-
60+
6261 return true ;
6362}
6463
6564AppendMatrixAlgorithm::Outputs AppendMatrixAlgorithm::ConcatenateMatrices (const MatrixHandle base_matrix, const std::vector<boost::shared_ptr<Matrix>> input_matrices, const AppendMatrixAlgorithm::Parameters& params) const
66- {
65+ {
6766
6867 if (input_matrices.size ()==0 )
6968 return base_matrix;
70-
69+
7170 Outputs outputs = run (boost::make_tuple (base_matrix, input_matrices[0 ]), params);
7271 for (Eigen::Index c=1 ; c<input_matrices.size (); c++)
7372 {
@@ -79,49 +78,49 @@ AppendMatrixAlgorithm::Outputs AppendMatrixAlgorithm::ConcatenateMatrices(const
7978}
8079
8180AppendMatrixAlgorithm::Outputs AppendMatrixAlgorithm::run (const AppendMatrixAlgorithm::Inputs& input, const AppendMatrixAlgorithm::Parameters& params) const
82- {
81+ {
8382 auto lhsPtr = input.get <0 >();
8483 auto rhsPtr = input.get <1 >();
8584 if (!lhsPtr || !rhsPtr)
8685 error (" At least two matrices are needed to run this module. " );
8786
88- if (!((matrixIs::sparse (lhsPtr) && matrixIs::sparse (rhsPtr)) || (matrixIs::dense (lhsPtr) && matrixIs::dense (rhsPtr)) || (matrixIs::column (lhsPtr) && matrixIs::column (rhsPtr))))
87+ if (!((matrixIs::sparse (lhsPtr) && matrixIs::sparse (rhsPtr)) || (matrixIs::dense (lhsPtr) && matrixIs::dense (rhsPtr)) || (matrixIs::column (lhsPtr) && matrixIs::column (rhsPtr))))
8988 {
9089 error (" Mixing of different matrix types as inputs is not supported. " );
91- return Outputs ();
90+ return Outputs ();
9291 }
93-
92+
9493 if (!check_dimensions (*lhsPtr, *rhsPtr, params))
9594 {
9695 error (" Input matrix dimensions do not match. " );
9796 return Outputs ();
9897 }
99-
98+
10099 Eigen::MatrixXd result;
101100 if (matrixIs::dense (lhsPtr) || matrixIs::column (lhsPtr))
102101 {
103102 if (params == ROWS)
104103 result=Eigen::MatrixXd (lhsPtr->nrows ()+rhsPtr->nrows (),lhsPtr->ncols ());
105104 else
106- result=Eigen::MatrixXd (lhsPtr->nrows (),lhsPtr->ncols ()+rhsPtr->ncols ());
107-
105+ result=Eigen::MatrixXd (lhsPtr->nrows (),lhsPtr->ncols ()+rhsPtr->ncols ());
106+
108107 if (matrixIs::dense (lhsPtr))
109108 result << *castMatrix::toDense (lhsPtr), *castMatrix::toDense (rhsPtr);
110109 else
111110 result << *castMatrix::toColumn (lhsPtr), *castMatrix::toColumn (rhsPtr);
112-
111+
113112 if (matrixIs::column (lhsPtr) && (result.rows ()==1 || result.cols ()==1 ))
114- return boost::make_shared<DenseColumnMatrix>(result);
115-
113+ return boost::make_shared<DenseColumnMatrix>(result);
114+
116115 return boost::make_shared<DenseMatrix>(result);
117116 } else
118117 if (matrixIs::sparse (lhsPtr))
119118 return SparseRowMatrixFromMap::concatenateSparseMatrices (*castMatrix::toSparse (lhsPtr),*castMatrix::toSparse (rhsPtr),params==ROWS);
120119 else
121120 {
122121 error (" This matrix type is not supported" );
123- }
124-
122+ }
123+
125124 return Outputs ();
126125}
127126
@@ -130,14 +129,14 @@ AlgorithmOutput AppendMatrixAlgorithm::run(const AlgorithmInput& input) const
130129 auto lhs = input.get <Matrix>(Variables::FirstMatrix);
131130 auto rhs = input.get <Matrix>(Variables::SecondMatrix);
132131 auto input_matrices = input.getList <Matrix>(AppendMatrixAlgorithm::InputMatrices);
133-
134- Outputs outputs;
132+
133+ Outputs outputs;
135134 Parameters params=Option (get (Variables::RowsOrColumns).toInt ());
136135 outputs = run (boost::make_tuple (lhs, rhs), params);
137-
136+
138137 if (input_matrices.size ()>0 )
139138 outputs = ConcatenateMatrices (outputs, input_matrices, params);
140-
139+
141140 AlgorithmOutput output;
142141 output[Variables::ResultMatrix] = outputs;
143142 return output;
0 commit comments