matrix osztaly osszeadasra

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

10 bejegyzés megtekintése - 21-30 / 179
  • Szerző
    Bejegyzés
  • #2154639
    jules
    Felhasználó

      Helyesbites: a matrixok osszeget osztanam a generalt matrixok szamaval, ugye pl. 5 matrix osszeadasa eseten 5-tel…

      #2154640
      jules
      Felhasználó

        Helyesbites: a matrixok osszeget osztanam a generalt matrixok szamaval, ugye pl. 5 matrix osszeadasa eseten 5-tel…

        #2154641
        zoltan22
        Felhasználó

          Amiket irtal szerintem egyszeru dolgok. A Matrix osztalyodat szerintem tulaltalanositottad (avagy agyuval a verebre).

          Amire szukseged lenne (szerintem):
          – a fuggveny, amivel a vektorokbol matrixot allit elo: ez lehetne a matrix metodusa
          – osszeadasi mulvelet 2 matrix kozott
          – matrix osztasa skalarral

          Vazolom kodban:

          Code:
          struct vektor {
          float x,y,z;
          };

          class Matrix3x3 {
          private:
          float tomb[3][3]; // minek vacakolni?

          public:
          void init(vektor a, vektor b){
            // itt feltoltod a ‘tomb’-ot
          }
          Matrix3x3 &operator +=(Matrix3x3 b){ // osszeadas
          int x,y;
          for(x=0; x<3; x++)
          for(y=0; y<3; y++)
            tomb[x][y] += b.tomb[x][y];
          return *this;
          }
          Matrix3x3 &operator/=(float c){ // osztas skalarral
          int x,y;
          for(x=0; x<3; x++)
          for(y=0; y<3; y++)
            tomb[x][y] /= c;
          return *this;
          }
          };

          A hasznalat valami ilyesmi lehetne:

          Code:
          vektor valami[10]; // ott vannak a vektoraink, feltoltve
          Matrix m[10]; // matrixok
          for(i=0; i<n; i++)
          m[I].init(valami[I]; // minden vektor atalakitva
          Matrix osszeg = m[0];
          for(i=1; i<n; i++)
          osszeg += m[I];
          m /= egy_szam;
          // most m-ben megvan ami kell neked
          #2154642
          zoltan22
          Felhasználó

            Amiket irtal szerintem egyszeru dolgok. A Matrix osztalyodat szerintem tulaltalanositottad (avagy agyuval a verebre).

            Amire szukseged lenne (szerintem):
            – a fuggveny, amivel a vektorokbol matrixot allit elo: ez lehetne a matrix metodusa
            – osszeadasi mulvelet 2 matrix kozott
            – matrix osztasa skalarral

            Vazolom kodban:

            Code:
            struct vektor {
            float x,y,z;
            };

            class Matrix3x3 {
            private:
            float tomb[3][3]; // minek vacakolni?

            public:
            void init(vektor a, vektor b){
              // itt feltoltod a ‘tomb’-ot
            }
            Matrix3x3 &operator +=(Matrix3x3 b){ // osszeadas
            int x,y;
            for(x=0; x<3; x++)
            for(y=0; y<3; y++)
              tomb[x][y] += b.tomb[x][y];
            return *this;
            }
            Matrix3x3 &operator/=(float c){ // osztas skalarral
            int x,y;
            for(x=0; x<3; x++)
            for(y=0; y<3; y++)
              tomb[x][y] /= c;
            return *this;
            }
            };

            A hasznalat valami ilyesmi lehetne:

            Code:
            vektor valami[10]; // ott vannak a vektoraink, feltoltve
            Matrix m[10]; // matrixok
            for(i=0; i<n; i++)
            m[I].init(valami[I]; // minden vektor atalakitva
            Matrix osszeg = m[0];
            for(i=1; i<n; i++)
            osszeg += m[I];
            m /= egy_szam;
            // most m-ben megvan ami kell neked
            #2154643
            jules
            Felhasználó

              Bocsi a szőrözésért, csak talaltam valahol egy ilyet:

              Code:
              template
              Matrix TensorProduct(Matrix& A,Matrix& B) {

                  if (A.M == 1 && A.N == 1) {
                return B;
                  }

                  if (B.M == 1 && B.N == 1)
                return A;

                  int rows = A.M*B.M;
                  int cols = A.N*B.N;

                  Matrix M(rows,cols);

                  for (int i=0;i<rows;i++)
                for (int j=0;j<cols;j++)
                M(i,j) = A(i/B.M,j/B.N) * B(i%B.M,j%B.N);

                  return M;
              }

              ami egy vektorbol csinal nekem 3×3-as matrixot. Most ezt vagy ehhez hasonlot kellene ide atultetnem, de ez NEKEM nem tunik egyszerunek…

              #2154644
              jules
              Felhasználó

                Bocsi a szőrözésért, csak talaltam valahol egy ilyet:

                Code:
                template
                Matrix TensorProduct(Matrix& A,Matrix& B) {

                    if (A.M == 1 && A.N == 1) {
                  return B;
                    }

                    if (B.M == 1 && B.N == 1)
                  return A;

                    int rows = A.M*B.M;
                    int cols = A.N*B.N;

                    Matrix M(rows,cols);

                    for (int i=0;i<rows;i++)
                  for (int j=0;j<cols;j++)
                  M(i,j) = A(i/B.M,j/B.N) * B(i%B.M,j%B.N);

                    return M;
                }

                ami egy vektorbol csinal nekem 3×3-as matrixot. Most ezt vagy ehhez hasonlot kellene ide atultetnem, de ez NEKEM nem tunik egyszerunek…

                #2154645
                zoltan22
                Felhasználó

                  Ahogy elnezem, minimum 2 vektor kell hozza. Hogy 3×3-ast kapj, kell egy 3×1-es es egy 1×3-as matrix.

                  Ha jol latom errol van szo:
                  http://en.wikipedia.org/wiki/Tensor_product
                  http://en.wikipedia.org/wiki/Kronecker_product

                  A masodik link alapjan konnyu rajonni a logikajara 😉

                  #2154646
                  zoltan22
                  Felhasználó

                    Ahogy elnezem, minimum 2 vektor kell hozza. Hogy 3×3-ast kapj, kell egy 3×1-es es egy 1×3-as matrix.

                    Ha jol latom errol van szo:
                    http://en.wikipedia.org/wiki/Tensor_product
                    http://en.wikipedia.org/wiki/Kronecker_product

                    A masodik link alapjan konnyu rajonni a logikajara 😉

                    #2154647
                    jules
                    Felhasználó

                      Persze. A generalt random vektort osszeszorzom onmagaval tenzorialisan… Csak ezt kellene beletenni az altalad vazolt kodba…valahogy

                      #2154648
                      jules
                      Felhasználó

                        Persze. A generalt random vektort osszeszorzom onmagaval tenzorialisan… Csak ezt kellene beletenni az altalad vazolt kodba…valahogy

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