Kezdőlap › Fórumok › Programozás › matrix osztaly osszeadasra
- This topic has 178 hozzászólás, 8 résztvevő, and was last updated 17 years, 4 months telt el by
uzsolt.
-
SzerzőBejegyzés
-
2008-02-20-22:03 #2154619jules wrote:Code:template class Matrix {
…
}mondjuk ez:
Code:template class Matrix { // a Matrix utan meg kell egy
}Igy mar lefordul 😀
Code:M(i,j) = A(i,j) + B(i,j);Itt nem ertem, hogy miert a fuggvenyhivas-operatort akarod felulbiralni.
Code:public:Z *A; //!< Pointer to the matrix elements
unsigned int M; //!< Number of Rows
unsigned int N; //!< Number of ColumnsItt a „public”-ba kotodnek: nem szokas egy objektum tulajdonsagait publikussa tenni.
2008-02-20-22:03 #2154620jules wrote:Code:template class Matrix {
…
}mondjuk ez:
Code:template class Matrix { // a Matrix utan meg kell egy
}Igy mar lefordul 😀
Code:M(i,j) = A(i,j) + B(i,j);Itt nem ertem, hogy miert a fuggvenyhivas-operatort akarod felulbiralni.
Code:public:Z *A; //!< Pointer to the matrix elements
unsigned int M; //!< Number of Rows
unsigned int N; //!< Number of ColumnsItt a „public”-ba kotodnek: nem szokas egy objektum tulajdonsagait publikussa tenni.
2008-02-20-22:22 #2154621erdekes, nekem lefordult nelkul is…
de egyebkent az osszeadasi kodban valami hiba van, ez igy valahogy nem igazan mukodik, valamit rosszul adtam meg, csak nem tudom mit…
amit a multkor beszeltunk
Code:…
float tmp[]={tar[1].x, tar[1].y, tar[1].z};Matrix A(tmp,3,1);
Matrix B(tmp,1,3);
…ebbol a vektorokbol feltoltok egy matrixot, es ugye ha pl. i=10, akkor van nekem tiz matrixom. ezeket szeretnem osszeadni, vegulis erre menne ki az egesz…
persze az mar egy masik kerdes lenne, hogy hogyan tudom ezt az osszeget egybol legeneralni (for ciklus + egyebek…)2008-02-20-22:22 #2154622erdekes, nekem lefordult nelkul is…
de egyebkent az osszeadasi kodban valami hiba van, ez igy valahogy nem igazan mukodik, valamit rosszul adtam meg, csak nem tudom mit…
amit a multkor beszeltunk
Code:…
float tmp[]={tar[1].x, tar[1].y, tar[1].z};Matrix A(tmp,3,1);
Matrix B(tmp,1,3);
…ebbol a vektorokbol feltoltok egy matrixot, es ugye ha pl. i=10, akkor van nekem tiz matrixom. ezeket szeretnem osszeadni, vegulis erre menne ki az egesz…
persze az mar egy masik kerdes lenne, hogy hogyan tudom ezt az osszeget egybol legeneralni (for ciklus + egyebek…)2008-02-21-11:21 #2154623az osszeadas asszem megvan.
az a helyzet, hogy:
(1) legeneralok pl. n db. kulonbozo A es B vektort
(2) ezekbol kepezek egy matrixot valamilyen C = f(A,B) fuggvenyel
(3) ezeket a C_1, C_2, …, C_n matrixokat szeretnem osszeadnilehetseges ezt valahogy megoldani a fenti eljarasban? valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…
2008-02-21-11:21 #2154624az osszeadas asszem megvan.
az a helyzet, hogy:
(1) legeneralok pl. n db. kulonbozo A es B vektort
(2) ezekbol kepezek egy matrixot valamilyen C = f(A,B) fuggvenyel
(3) ezeket a C_1, C_2, …, C_n matrixokat szeretnem osszeadnilehetseges ezt valahogy megoldani a fenti eljarasban? valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…
2008-02-21-12:34 #2154625Nagyon röviden vázolva, valahogy így nézne ki egy használható mátrix szerkezet
template
class Matrix {
protected:
TValue * _elements;
size_t _size; // _width * _height (csak a praktikusság miatt)
int _width;
int _height;public:
// Konstruktorok
inline Matrix ( int _width, int _height ); // üres
inline Matrix ( const Matrix & _src ); // másoló
// …// Tag operátorok
inline Matrix & operator= ( const Matrix & _src ); // = operátor
inline Matrix & operatorX= ( const Matrix & _src ); // X= operátor
// (X helyén tarmészetesen valami van, és mindegyiket egyenként kell definiálni)
inline Matrix & operatorX= ( const TValue _src ); // X= operátor
// …public:
// Az elemekhez való hozzáférés (const és/vagy nem const…), méret lekérdezés…
// …public:
// Tetszőleges függvények: resize, …
};// Nem tag Operátorok
template inline
Matrix operatorX ( const Matrix & _src1, const TValue _src2 );
…// Tetszőleges függvények: abs, transp, …
/* Egy példa, hogy hogy hajtódik végre az összes elemen a művelet */
template inline
Matrix & Matrix ::operatorX= ( const TValue _src ) {
for ( size_t __i = 0; __i _size; ++ __i )
this->_elements [ __i ] X= _src;return *this;
}
[/CODE][CODE=Használat]
/* Egy-példa példa a használatra */
Matrix matrix_a ( 10, 12 ); // üres létrehozása
matrix_a = 1; // feltöltés ‘1’-es elemekkel
Matrix matrix_b = matrix_a * 2; // minden matrix_a elem megszorzása 2-vel és matrix_b-be másolás
matrix_b += 2; // még 2 hozzáadása
Matrix vector_a ( 1, 12 ); // üres létrehozása
matrix_b *= vector_a; // még egy kis vektorszorzás
[/CODE]Valami hasonló(k) van(nak) az std libben is.
Aztán lehet azzal bonyolítani, hogy a műveletek nem 1 típusú argumentumot fogadnak el. (Ez úgy meg 3szorozza-4-szerezi a kódot.)[CODE=Felépítés]template
class Matrix {
protected:
TValue * _elements;
size_t _size; // _width * _height (csak a praktikusság miatt)
int _width;
int _height;public:
// Konstruktorok
inline Matrix ( int _width, int _height ); // üres
inline Matrix ( const Matrix & _src ); // másoló
// …// Tag operátorok
inline Matrix & operator= ( const Matrix & _src ); // = operátor
inline Matrix & operatorX= ( const Matrix & _src ); // X= operátor
// (X helyén tarmészetesen valami van, és mindegyiket egyenként kell definiálni)
inline Matrix & operatorX= ( const TValue _src ); // X= operátor
// …public:
// Az elemekhez való hozzáférés (const és/vagy nem const…), méret lekérdezés…
// …public:
// Tetszőleges függvények: resize, …
};// Nem tag Operátorok
template inline
Matrix operatorX ( const Matrix & _src1, const TValue _src2 );
…// Tetszőleges függvények: abs, transp, …
/* Egy példa, hogy hogy hajtódik végre az összes elemen a művelet */
template inline
Matrix & Matrix ::operatorX= ( const TValue _src ) {
for ( size_t __i = 0; __i _size; ++ __i )
this->_elements [ __i ] X= _src;return *this;
}
[/CODE]/* Egy-példa példa a használatra */
Matrix matrix_a ( 10, 12 ); // üres létrehozása
matrix_a = 1; // feltöltés ‘1’-es elemekkel
Matrix matrix_b = matrix_a * 2; // minden matrix_a elem megszorzása 2-vel és matrix_b-be másolás
matrix_b += 2; // még 2 hozzáadása
Matrix vector_a ( 1, 12 ); // üres létrehozása
matrix_b *= vector_a; // még egy kis vektorszorzás
[/CODE]Valami hasonló(k) van(nak) az std libben is.
Aztán lehet azzal bonyolítani, hogy a műveletek nem 1 típusú argumentumot fogadnak el. (Ez úgy meg 3szorozza-4-szerezi a kódot.)[CODE=Használat]
/* Egy-példa példa a használatra */
Matrix matrix_a ( 10, 12 ); // üres létrehozása
matrix_a = 1; // feltöltés ‘1’-es elemekkel
Matrix matrix_b = matrix_a * 2; // minden matrix_a elem megszorzása 2-vel és matrix_b-be másolás
matrix_b += 2; // még 2 hozzáadása
Matrix vector_a ( 1, 12 ); // üres létrehozása
matrix_b *= vector_a; // még egy kis vektorszorzás
[/CODE]Valami hasonló(k) van(nak) az std libben is.
Aztán lehet azzal bonyolítani, hogy a műveletek nem 1 típusú argumentumot fogadnak el. (Ez úgy meg 3szorozza-4-szerezi a kódot.)2008-02-21-12:34 #2154626Nagyon röviden vázolva, valahogy így nézne ki egy használható mátrix szerkezet
template
class Matrix {
protected:
TValue * _elements;
size_t _size; // _width * _height (csak a praktikusság miatt)
int _width;
int _height;public:
// Konstruktorok
inline Matrix ( int _width, int _height ); // üres
inline Matrix ( const Matrix & _src ); // másoló
// …// Tag operátorok
inline Matrix & operator= ( const Matrix & _src ); // = operátor
inline Matrix & operatorX= ( const Matrix & _src ); // X= operátor
// (X helyén tarmészetesen valami van, és mindegyiket egyenként kell definiálni)
inline Matrix & operatorX= ( const TValue _src ); // X= operátor
// …public:
// Az elemekhez való hozzáférés (const és/vagy nem const…), méret lekérdezés…
// …public:
// Tetszőleges függvények: resize, …
};// Nem tag Operátorok
template inline
Matrix operatorX ( const Matrix & _src1, const TValue _src2 );
…// Tetszőleges függvények: abs, transp, …
/* Egy példa, hogy hogy hajtódik végre az összes elemen a művelet */
template inline
Matrix & Matrix ::operatorX= ( const TValue _src ) {
for ( size_t __i = 0; __i _size; ++ __i )
this->_elements [ __i ] X= _src;return *this;
}
[/CODE][CODE=Használat]
/* Egy-példa példa a használatra */
Matrix matrix_a ( 10, 12 ); // üres létrehozása
matrix_a = 1; // feltöltés ‘1’-es elemekkel
Matrix matrix_b = matrix_a * 2; // minden matrix_a elem megszorzása 2-vel és matrix_b-be másolás
matrix_b += 2; // még 2 hozzáadása
Matrix vector_a ( 1, 12 ); // üres létrehozása
matrix_b *= vector_a; // még egy kis vektorszorzás
[/CODE]Valami hasonló(k) van(nak) az std libben is.
Aztán lehet azzal bonyolítani, hogy a műveletek nem 1 típusú argumentumot fogadnak el. (Ez úgy meg 3szorozza-4-szerezi a kódot.)[CODE=Felépítés]template
class Matrix {
protected:
TValue * _elements;
size_t _size; // _width * _height (csak a praktikusság miatt)
int _width;
int _height;public:
// Konstruktorok
inline Matrix ( int _width, int _height ); // üres
inline Matrix ( const Matrix & _src ); // másoló
// …// Tag operátorok
inline Matrix & operator= ( const Matrix & _src ); // = operátor
inline Matrix & operatorX= ( const Matrix & _src ); // X= operátor
// (X helyén tarmészetesen valami van, és mindegyiket egyenként kell definiálni)
inline Matrix & operatorX= ( const TValue _src ); // X= operátor
// …public:
// Az elemekhez való hozzáférés (const és/vagy nem const…), méret lekérdezés…
// …public:
// Tetszőleges függvények: resize, …
};// Nem tag Operátorok
template inline
Matrix operatorX ( const Matrix & _src1, const TValue _src2 );
…// Tetszőleges függvények: abs, transp, …
/* Egy példa, hogy hogy hajtódik végre az összes elemen a művelet */
template inline
Matrix & Matrix ::operatorX= ( const TValue _src ) {
for ( size_t __i = 0; __i _size; ++ __i )
this->_elements [ __i ] X= _src;return *this;
}
[/CODE]/* Egy-példa példa a használatra */
Matrix matrix_a ( 10, 12 ); // üres létrehozása
matrix_a = 1; // feltöltés ‘1’-es elemekkel
Matrix matrix_b = matrix_a * 2; // minden matrix_a elem megszorzása 2-vel és matrix_b-be másolás
matrix_b += 2; // még 2 hozzáadása
Matrix vector_a ( 1, 12 ); // üres létrehozása
matrix_b *= vector_a; // még egy kis vektorszorzás
[/CODE]Valami hasonló(k) van(nak) az std libben is.
Aztán lehet azzal bonyolítani, hogy a műveletek nem 1 típusú argumentumot fogadnak el. (Ez úgy meg 3szorozza-4-szerezi a kódot.)[CODE=Használat]
/* Egy-példa példa a használatra */
Matrix matrix_a ( 10, 12 ); // üres létrehozása
matrix_a = 1; // feltöltés ‘1’-es elemekkel
Matrix matrix_b = matrix_a * 2; // minden matrix_a elem megszorzása 2-vel és matrix_b-be másolás
matrix_b += 2; // még 2 hozzáadása
Matrix vector_a ( 1, 12 ); // üres létrehozása
matrix_b *= vector_a; // még egy kis vektorszorzás
[/CODE]Valami hasonló(k) van(nak) az std libben is.
Aztán lehet azzal bonyolítani, hogy a műveletek nem 1 típusú argumentumot fogadnak el. (Ez úgy meg 3szorozza-4-szerezi a kódot.)2008-02-21-13:22 #2154627jules wrote:valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…Ha mar C++, hasznalhatnad a vektor osztalyt: http://cppreference.com/cppvector/index.html
./off
vizsla wrote:Valami hasonló(k) van(nak) az std libben is.Ott meg van egy nagy rakas preporecesszor dirketiva is kozte, hogy teljesen olvashatatlan legyen 🙂
2008-02-21-13:22 #2154628jules wrote:valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…Ha mar C++, hasznalhatnad a vektor osztalyt: http://cppreference.com/cppvector/index.html
./off
vizsla wrote:Valami hasonló(k) van(nak) az std libben is.Ott meg van egy nagy rakas preporecesszor dirketiva is kozte, hogy teljesen olvashatatlan legyen 🙂
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz