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. 22
      test/matrixAssignment.cpp

9
matrix/Matrix.hpp

@ -407,12 +407,21 @@ public: @@ -407,12 +407,21 @@ public:
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)
{
slice<M,1>(0,j) = column;
}
void setCol(size_t j, Type val)
{
slice<M,1>(0,j) = val;
}
void setZero()
{
memset(_data, 0, sizeof(_data));

4
matrix/Slice.hpp

@ -119,9 +119,9 @@ public: @@ -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;
for (size_t j = 0; j < (P<Q?P:Q); j++) {
res(j) = self(j,j);

22
test/matrixAssignment.cpp

@ -72,6 +72,28 @@ int main() @@ -72,6 +72,28 @@ int main()
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] = {
7, 8, 9,
4, 5, 6,

Loading…
Cancel
Save