Fix row/col des matrices
This commit is contained in:
parent
92d337fcc6
commit
2a412ddb13
|
@ -66,7 +66,7 @@ namespace gti320 {
|
||||||
|
|
||||||
for (int col = 0; col < this->cols(); col++) {
|
for (int col = 0; col < this->cols(); col++) {
|
||||||
for (int row = 0; row < this->rows(); row++) {
|
for (int row = 0; row < this->rows(); row++) {
|
||||||
this(col, row) = submatrix(col, row);
|
this(row, col) = submatrix(row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -76,7 +76,7 @@ namespace gti320 {
|
||||||
* Accesseur à une entrée de la matrice (lecture seule)
|
* Accesseur à une entrée de la matrice (lecture seule)
|
||||||
*/
|
*/
|
||||||
_Scalar operator()(int i, int j) const {
|
_Scalar operator()(int i, int j) const {
|
||||||
int index = i * this->rows() + j;
|
int index = i + j * this->rows();
|
||||||
return this->m_storage.data()[index];
|
return this->m_storage.data()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ namespace gti320 {
|
||||||
* Accesseur à une entrée de la matrice (lecture ou écriture)
|
* Accesseur à une entrée de la matrice (lecture ou écriture)
|
||||||
*/
|
*/
|
||||||
_Scalar &operator()(int i, int j) {
|
_Scalar &operator()(int i, int j) {
|
||||||
int index = i * this->rows() + j;
|
int index = i + j * this->rows();
|
||||||
return this->m_storage.data()[index];
|
return this->m_storage.data()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ namespace gti320 {
|
||||||
auto transposed = Matrix<_OtherScalar, _OtherRows, _OtherCols, _OtherStorage>(this->cols(), this->rows());
|
auto transposed = Matrix<_OtherScalar, _OtherRows, _OtherCols, _OtherStorage>(this->cols(), this->rows());
|
||||||
for (int col = 0; col < this->cols(); col++) {
|
for (int col = 0; col < this->cols(); col++) {
|
||||||
for (int row = 0; row < this->rows(); row++) {
|
for (int row = 0; row < this->rows(); row++) {
|
||||||
transposed(row, col) = (*this)(col, row);
|
transposed(col, row) = (*this)(row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return transposed;
|
return transposed;
|
||||||
|
@ -172,7 +172,7 @@ namespace gti320 {
|
||||||
|
|
||||||
for (int row = 0; row < this->rows(); row++) {
|
for (int row = 0; row < this->rows(); row++) {
|
||||||
for (int col = 0; col < this->cols(); col++) {
|
for (int col = 0; col < this->cols(); col++) {
|
||||||
this(col, row) = submatrix(col, row);
|
this(row, col) = submatrix(row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
|
@ -182,7 +182,7 @@ namespace gti320 {
|
||||||
* Accesseur à une entrée de la matrice (lecture seule)
|
* Accesseur à une entrée de la matrice (lecture seule)
|
||||||
*/
|
*/
|
||||||
_Scalar operator()(int i, int j) const {
|
_Scalar operator()(int i, int j) const {
|
||||||
int index = i + j * this->cols();
|
int index = i * this->cols() + j;
|
||||||
return this->m_storage.data()[index];
|
return this->m_storage.data()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ namespace gti320 {
|
||||||
* Accesseur à une entrée de la matrice (lecture ou écriture)
|
* Accesseur à une entrée de la matrice (lecture ou écriture)
|
||||||
*/
|
*/
|
||||||
_Scalar &operator()(int i, int j) {
|
_Scalar &operator()(int i, int j) {
|
||||||
int index = i + j * this->cols();
|
int index = i * this->cols() + j;
|
||||||
return this->m_storage.data()[index];
|
return this->m_storage.data()[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,7 +217,7 @@ namespace gti320 {
|
||||||
|
|
||||||
for (int row = 0; row < this->rows(); row++) {
|
for (int row = 0; row < this->rows(); row++) {
|
||||||
for (int col = 0; col < this->cols(); col++) {
|
for (int col = 0; col < this->cols(); col++) {
|
||||||
t(row, col) = (*this)(col, row);
|
t(col, row) = (*this)(row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +310,7 @@ namespace gti320 {
|
||||||
|
|
||||||
for (int col = 0; col < this->cols(); col++) {
|
for (int col = 0; col < this->cols(); col++) {
|
||||||
for (int row = 0; row < this->rows(); row++) {
|
for (int row = 0; row < this->rows(); row++) {
|
||||||
(*this)(col, row) = matrix(col, row);
|
(*this)(row, col) = matrix(row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,7 +362,7 @@ namespace gti320 {
|
||||||
|
|
||||||
for (int col = 0; col < this->cols(); col++) {
|
for (int col = 0; col < this->cols(); col++) {
|
||||||
for (int row = 0; row < this->rows(); row++) {
|
for (int row = 0; row < this->rows(); row++) {
|
||||||
t(row, col) = (*this)(col, row);
|
t(col, row) = (*this)(row, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ namespace gti320 {
|
||||||
for (int col = 0; col < B.cols(); col++) {
|
for (int col = 0; col < B.cols(); col++) {
|
||||||
for (int row = 0; row < A.rows(); row++) {
|
for (int row = 0; row < A.rows(); row++) {
|
||||||
for (int k = 0; k < A.cols(); k++) {
|
for (int k = 0; k < A.cols(); k++) {
|
||||||
result(col, row) += A(k, row) * B(col, k);
|
result(row, col) += A(row, k) * B(k, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ namespace gti320 {
|
||||||
for (int col = 0; col < A.cols(); col++) {
|
for (int col = 0; col < A.cols(); col++) {
|
||||||
for (int row = 0; row < B.rows(); row++) {
|
for (int row = 0; row < B.rows(); row++) {
|
||||||
for (int k = 0; k < B.cols(); k++) {
|
for (int k = 0; k < B.cols(); k++) {
|
||||||
result(k, row) += A(col, row) * B(k, col);
|
result(row, k) += A(row, col) * B(col, k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ namespace gti320 {
|
||||||
for (int col = 0; col < B.cols(); col++) {
|
for (int col = 0; col < B.cols(); col++) {
|
||||||
for (int row = 0; row < A.rows(); row++) {
|
for (int row = 0; row < A.rows(); row++) {
|
||||||
for (int k = 0; k < A.cols(); k++) {
|
for (int k = 0; k < A.cols(); k++) {
|
||||||
result(col, row) += A(k, row) * B(col, k);
|
result(row, col) += A(row, k) * B(k, col);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ namespace gti320 {
|
||||||
|
|
||||||
for (int col = 0; col < A.cols(); col++) {
|
for (int col = 0; col < A.cols(); col++) {
|
||||||
for (int row = 0; row < A.rows(); row++) {
|
for (int row = 0; row < A.rows(); row++) {
|
||||||
result(row, col) = A(row, col) + B(row, col);
|
result(col, row) = A(col, row) + B(col, row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,31 +224,11 @@ TEST(TestLabo1, MatrixMatrixOperators) {
|
||||||
{
|
{
|
||||||
// Création d'un matrice à stockage par lignes
|
// Création d'un matrice à stockage par lignes
|
||||||
Matrix<double, Dynamic, Dynamic, RowStorage> A(5, 5);
|
Matrix<double, Dynamic, Dynamic, RowStorage> A(5, 5);
|
||||||
A(0, 0) = 0.8147;
|
A(0, 0) = 0.8147; A(0, 1) = 0.0975; A(0, 2) = 0.1576; A(0, 3) = 0.1419; A(0, 4) = 0.6557;
|
||||||
A(0, 1) = 0.0975;
|
A(1, 0) = 0.9058; A(1, 1) = 0.2785; A(1, 2) = 0.9706; A(1, 3) = 0.4218; A(1, 4) = 0.0357;
|
||||||
A(0, 2) = 0.1576;
|
A(2, 0) = 0.1270; A(2, 1) = 0.5469; A(2, 2) = 0.9572; A(2, 3) = 0.9157; A(2, 4) = 0.8491;
|
||||||
A(0, 3) = 0.1419;
|
A(3, 0) = 0.9134; A(3, 1) = 0.9575; A(3, 2) = 0.4854; A(3, 3) = 0.7922; A(3, 4) = 0.9340;
|
||||||
A(0, 4) = 0.6557;
|
A(4, 0) = 0.6324; A(4, 1) = 0.9649; A(4, 2) = 0.8003; A(4, 3) = 0.9595; A(4, 4) = 0.6787;
|
||||||
A(1, 0) = 0.9058;
|
|
||||||
A(1, 1) = 0.2785;
|
|
||||||
A(1, 2) = 0.9706;
|
|
||||||
A(1, 3) = 0.4218;
|
|
||||||
A(1, 4) = 0.0357;
|
|
||||||
A(2, 0) = 0.1270;
|
|
||||||
A(2, 1) = 0.5469;
|
|
||||||
A(2, 2) = 0.9572;
|
|
||||||
A(2, 3) = 0.9157;
|
|
||||||
A(2, 4) = 0.8491;
|
|
||||||
A(3, 0) = 0.9134;
|
|
||||||
A(3, 1) = 0.9575;
|
|
||||||
A(3, 2) = 0.4854;
|
|
||||||
A(3, 3) = 0.7922;
|
|
||||||
A(3, 4) = 0.9340;
|
|
||||||
A(4, 0) = 0.6324;
|
|
||||||
A(4, 1) = 0.9649;
|
|
||||||
A(4, 2) = 0.8003;
|
|
||||||
A(4, 3) = 0.9595;
|
|
||||||
A(4, 4) = 0.6787;
|
|
||||||
|
|
||||||
// Test : transposée (le résultat est une matrice à stockage par
|
// Test : transposée (le résultat est une matrice à stockage par
|
||||||
// colonnes)
|
// colonnes)
|
||||||
|
@ -598,7 +578,7 @@ TEST(TestLabo1, Supplementaires) {
|
||||||
expected = 1;
|
expected = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPECT_EQ(MC(col, row), expected);
|
EXPECT_EQ(MC(row, col), expected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,7 +612,7 @@ TEST(TestLabo1, Supplementaires) {
|
||||||
MC(1, 0) = 5;
|
MC(1, 0) = 5;
|
||||||
MC(0, 1) = 6;
|
MC(0, 1) = 6;
|
||||||
EXPECT_EQ(MC.data()[0], MC(0, 0));
|
EXPECT_EQ(MC.data()[0], MC(0, 0));
|
||||||
EXPECT_EQ(MC.data()[1], MC(0, 1));
|
EXPECT_EQ(MC.data()[1], MC(1, 0));
|
||||||
|
|
||||||
// Test 9: Stockage par rangée
|
// Test 9: Stockage par rangée
|
||||||
Matrix<int, -1, -1, RowStorage> MS(4, 6);
|
Matrix<int, -1, -1, RowStorage> MS(4, 6);
|
||||||
|
@ -640,7 +620,7 @@ TEST(TestLabo1, Supplementaires) {
|
||||||
MS(1, 0) = 5;
|
MS(1, 0) = 5;
|
||||||
MS(0, 1) = 6;
|
MS(0, 1) = 6;
|
||||||
EXPECT_EQ(MS.data()[0], MS(0, 0));
|
EXPECT_EQ(MS.data()[0], MS(0, 0));
|
||||||
EXPECT_EQ(MS.data()[1], MS(1, 0));
|
EXPECT_EQ(MS.data()[1], MS(0, 1));
|
||||||
|
|
||||||
// === Vecteurs ===
|
// === Vecteurs ===
|
||||||
// Test 10: Copie
|
// Test 10: Copie
|
||||||
|
|
Loading…
Reference in New Issue