2 |
#include "mathfunc.h" |
#include "mathfunc.h" |
3 |
#include "gadget.h" |
#include "gadget.h" |
4 |
|
|
|
//TODO usar mallock |
|
5 |
Matrix::Matrix(int nr, int nc, double value) { |
Matrix::Matrix(int nr, int nc, double value) { |
6 |
|
|
7 |
m = new double[nr * nc]; |
m = new double[nr * nc]; |
|
|
|
8 |
nrow = nr; |
nrow = nr; |
9 |
ncol = nc; |
ncol = nc; |
10 |
int i, j; |
int i, j; |
14 |
} |
} |
15 |
} |
} |
16 |
|
|
|
//Matrix::Matrix(const DoubleMatrix& initial) : nrow(initial.nrow) { |
|
|
// int i; |
|
|
// if (nrow >= 0) { |
|
|
//// v = new DoubleVector*[nrow]; |
|
|
//// for (i = 0; i < nrow; i++) |
|
|
//// v[i] = new DoubleVector(initial[i]); |
|
|
// v = new double[nrow][initial.Ncol(0)]; |
|
|
// int i,j; |
|
|
// |
|
|
// for (i = 0; i < nrow; i++) |
|
|
// for (j = 0; j < initial.Ncol(0); j++) |
|
|
// v[i][j] = initial[i][j]; |
|
|
// } else { |
|
|
// v = 0; |
|
|
// nrow = 0; |
|
|
// } |
|
|
//} |
|
|
|
|
17 |
Matrix::~Matrix() { |
Matrix::~Matrix() { |
18 |
int i; |
int i; |
19 |
if (m != 0) { |
if (m != 0) { |
54 |
} |
} |
55 |
} |
} |
56 |
|
|
|
//void Matrix::Delete(int pos) { |
|
|
// delete v[pos]; |
|
|
// int i; |
|
|
// if (nrow > 1) { |
|
|
// DoubleVector** vnew = new DoubleVector*[nrow - 1]; |
|
|
// for (i = 0; i < pos; i++) |
|
|
// vnew[i] = v[i]; |
|
|
// for (i = pos; i < nrow - 1; i++) |
|
|
// vnew[i] = v[i + 1]; |
|
|
// delete[] v; |
|
|
// v = vnew; |
|
|
// nrow--; |
|
|
// } else { |
|
|
// delete[] v; |
|
|
// v = 0; |
|
|
// nrow = 0; |
|
|
// } |
|
|
//} |
|
|
|
|
|
//Matrix& Matrix::operator = (const Matrix& d) { |
|
|
// int i; |
|
|
// if (v != 0) { |
|
|
// for (i = 0; i < nrow; i++) |
|
|
// delete v[i]; |
|
|
// delete[] v; |
|
|
// } |
|
|
// |
|
|
// nrow = d.nrow; |
|
|
// if (nrow > 0) { |
|
|
// v = new double*[nrow]; |
|
|
// for (i = 0; i < nrow; i++) |
|
|
// v[i] = new double(*d[i]); |
|
|
// |
|
|
// } else |
|
|
// v = 0; |
|
|
// |
|
|
// return *this; |
|
|
//} |
|
|
|
|
57 |
void Matrix::Reset() { |
void Matrix::Reset() { |
58 |
if (nrow > 0) { |
if (nrow > 0) { |
59 |
int i; |
int i; |
64 |
} |
} |
65 |
} |
} |
66 |
|
|
67 |
|
void Matrix::Initialize(int nr, int nc, double initial) { |
68 |
|
if (m != 0) |
69 |
|
delete[] m; |
70 |
|
|
71 |
|
m = new double[nr * nc]; |
72 |
|
nrow = nr; |
73 |
|
ncol = nc; |
74 |
|
int i, j; |
75 |
|
for (i = 0; i < nr; i++) { |
76 |
|
for (j = 0; j < nc; j++) |
77 |
|
m[i*ncol+j] = initial; |
78 |
|
} |
79 |
|
} |
80 |
|
|
81 |
void Matrix::Print(ofstream& outfile) const { |
void Matrix::Print(ofstream& outfile) const { |
82 |
int i, j; |
int i, j; |
83 |
for (i = 0; i < nrow; i++) { |
for (i = 0; i < nrow; i++) { |
91 |
|
|
92 |
void Matrix::setToZero() { |
void Matrix::setToZero() { |
93 |
int i, j; |
int i, j; |
|
// **v = {0}; |
|
94 |
for (i = 0; i < nrow; i++) |
for (i = 0; i < nrow; i++) |
95 |
for (j = 0; j < ncol; j++) |
for (j = 0; j < ncol; j++) |
96 |
m[i*ncol+j] = 0; |
m[i*ncol+j] = 0.0; |
|
// (*v[i]).setToZero(); |
|
97 |
} |
} |