matrix osztaly osszeadasra

Kezdőlap Fórumok Programozás matrix osztaly osszeadasra

10 bejegyzés megtekintése - 1-10 / 179
  • Szerző
    Bejegyzés
  • #2154619
    zoltan22
    Felhasználó
      jules 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 Columns

      Itt a „public”-ba kotodnek: nem szokas egy objektum tulajdonsagait publikussa tenni.

      #2154620
      zoltan22
      Felhasználó
        jules 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 Columns

        Itt a „public”-ba kotodnek: nem szokas egy objektum tulajdonsagait publikussa tenni.

        #2154621
        jules
        Felhasználó

          erdekes, 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…39.gif 

          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…)

          #2154622
          jules
          Felhasználó

            erdekes, 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…39.gif 

            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…)

            #2154623
            jules
            Felhasználó

              az 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 osszeadni

              lehetseges ezt valahogy megoldani a fenti eljarasban? valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…39.gif 

              #2154624
              jules
              Felhasználó

                az 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 osszeadni

                lehetseges ezt valahogy megoldani a fenti eljarasban? valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…39.gif 

                #2154625
                pointux
                Felhasználó

                  Nagyon 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.)

                  #2154626
                  pointux
                  Felhasználó

                    Nagyon 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.)

                    #2154627
                    zoltan22
                    Felhasználó
                      jules wrote:
                      valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…39.gif

                      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 🙂

                      #2154628
                      zoltan22
                      Felhasználó
                        jules wrote:
                        valahogy ezeket a C matrixokat minden generalas utan el kellene tarolni…39.gif

                        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 🙂

                      10 bejegyzés megtekintése - 1-10 / 179
                      • Be kell jelentkezni a hozzászóláshoz.