Browse Source

Set Matrix's col amd row to single value (#113)

master
kritz 5 years ago committed by Julian Kent
parent
commit
5cbcf6035a
  1. 9
      matrix/Matrix.hpp
  2. 4
      matrix/Slice.hpp
  3. 2
      matrix/SquareMatrix.hpp
  4. 22
      test/matrixAssignment.cpp

9
matrix/Matrix.hpp

@ -407,12 +407,21 @@ public:
slice<1,N>(i,0) = row_in.transpose(); slice<1,N>(i,0) = row_in.transpose();
} }
void setRow(size_t i, Type val)
{
slice<1,N>(i,0) = val;
}
void setCol(size_t j, const Matrix<Type, M, 1> &column) void setCol(size_t j, const Matrix<Type, M, 1> &column)
{ {
slice<M,1>(0,j) = column; slice<M,1>(0,j) = column;
} }
void setCol(size_t j, Type val)
{
slice<M,1>(0,j) = val;
}
void setZero() void setZero()
{ {
memset(_data, 0, sizeof(_data)); memset(_data, 0, sizeof(_data));

4
matrix/Slice.hpp

@ -119,9 +119,9 @@ public:
} }
} }
Vector<Type, P<Q?P:Q> diag() Vector<Type, P<Q?P:Q> diag() const
{ {
Slice<Type, P, Q, M, N>& self = *this; const Slice<Type, P, Q, M, N>& self = *this;
Vector<Type,P<Q?P:Q> res; Vector<Type,P<Q?P:Q> res;
for (size_t j = 0; j < (P<Q?P:Q); j++) { for (size_t j = 0; j < (P<Q?P:Q); j++) {
res(j) = self(j,j); res(j) = self(j,j);

2
matrix/SquareMatrix.hpp

@ -22,7 +22,7 @@ class Vector;
template <typename Type, size_t P, size_t Q, size_t M, size_t N> template <typename Type, size_t P, size_t Q, size_t M, size_t N>
class Slice; class Slice;
template<typename Type, size_t M> template <typename Type, size_t M>
class SquareMatrix : public Matrix<Type, M, M> class SquareMatrix : public Matrix<Type, M, M>
{ {
public: public:

22
test/matrixAssignment.cpp

@ -72,6 +72,28 @@ int main()
TEST(isEqual(m3, m2)); TEST(isEqual(m3, m2));
// set rows and columns to value
Matrix3f m2e(data2d);
float data2e_check1[3][3] = {
{1, 11, 3},
{4, 11, 6},
{7, 11, 9}
};
Matrix3f m2e_check1(data2e_check1);
float data2e_check2[3][3] = {
{1, 11, 3},
{4, 11, 6},
{0, 0, 0}
};
Matrix3f m2e_check2(data2e_check2);
m2e.setCol(1, 11);
TEST(isEqual(m2e, m2e_check1));
m2e.setRow(2, 0);
TEST(isEqual(m2e, m2e_check2));
float data_row_02_swap[9] = { float data_row_02_swap[9] = {
7, 8, 9, 7, 8, 9,
4, 5, 6, 4, 5, 6,

Loading…
Cancel
Save