当前位置: 首页>>代码示例>>C++>>正文


C++ Matrice类代码示例

本文整理汇总了C++中Matrice的典型用法代码示例。如果您正苦于以下问题:C++ Matrice类的具体用法?C++ Matrice怎么用?C++ Matrice使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了Matrice类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: result

Matrice operator-(Matrice A, Matrice B)
{
    int nlA, ncA, nlB, ncB;
    A.GetSize(nlA, ncA);
    B.GetSize(nlB, ncB);
    Matrice result(nlA, ncB);

    if(ncA!=ncB || nlA!=nlB)
    {
        cout << "- Impossible" << endl;
        return result;
    }
    else
    {
        double** m = new double*[nlA];

        for(int i=0; i<nlA ; i++)
        {
            m[i] = new double[ncB];
            for (int j=0; j<ncB; j++)
                m[i][j] = 0;
        }

        for(int i=0; i<nlA ; i++)
            for(int j=0; j<ncB ; j++)
                m[i][j]=(A.GetValue(i,j))-(B.GetValue(i,j));

        result.Set(m);
        return result;
    }
}
开发者ID:Tolcantor,项目名称:Voyager-Simulation,代码行数:31,代码来源:Matrice.cpp

示例2: result

Matrice operator*(Matrice A, Matrice B)
{
    int nlA, ncA, nlB, ncB;
    A.GetSize(nlA, ncA);
    B.GetSize(nlB, ncB);
    if(ncA!=nlB)
    {
        cout << "lol les matrice ça ce multiplies pas comme ça fdp" << endl;
    }
    else
    {
        Matrice result(nlA, ncB);
        double** m = new double*[nlA];
        for(int i=0; i<nlA ; i++)
        {
            m[i] = new double[ncB];
        }
        for(int i=0; i<nlA ; i++)
        {
            for(int j=0; j<ncB ; j++)
            {
                for(int k=0; k<ncA ; k++)
                {
                    m[i][j]+=(A.GetValue(i,k))*(B.GetValue(k,j));
                }
            }
        }
        result.Set(m);
        return resultat;
    }
}
开发者ID:Rayzer75,项目名称:Voyager-Simulation,代码行数:31,代码来源:Matrice.cpp

示例3: main

int main()
{
    
    Matrice A(2,2);
    A(0,0)=5;
    A(0,1)=4;
    A(1,1)=1;
    A(1,0)=8;
    Matrice B(A); // Construction par copie.
    Matrice C = A*B;
    
    int nlig = rand()%100;
    
    vector<Matrice> Mat_Vect; // Construction normal.
    vector<Matrice> Mat_Vect2; // Construction par copie.
    vector<Matrice> Mat_Vect3; // Construction par copie d'une multiplication.

    
    for (int i = 0; i < 10; i++){
        Matrice A = Matrice(nlig, nlig);
        A.RandomMatrice();
        Mat_Vect.push_back(A);
    }
    for (int i = 0; i < 10; i++){
        Mat_Vect2.push_back(Mat_Vect[i]);
    }
    for (int i = 0; i < 10; i++){
        Mat_Vect3.push_back(Mat_Vect[i]*Mat_Vect2[9-i]);
    }
    
    return 0;
    
}
开发者ID:constantinidan,项目名称:C-Algorithm-and-Programing,代码行数:33,代码来源:main.cpp

示例4: getMatrix

Matrice BlinkyBlock::getMatrix(const Vecteur &bs) const {
    Matrice mat;

    double sigma = 0.5*((int)position.pt[2]%2);
    mat.setTranslation((position.pt[0]+sigma)*bs[0],(position.pt[1]+sigma)*bs[1],position.pt[2]*bs[2]*M_SQRT1_2);
    return mat;
}
开发者ID:docben,项目名称:visibleSim2Collada,代码行数:7,代码来源:blinkyBlocks.cpp

示例5: Matrice

/****************************************************************************
 * Fonction:	Matrice::operateur/
 * Description: Divise tous les éléments de la matrice par une valeur réelle
 * Paramètres:	Valeur à diviser
 * Retour:		Matrice résultante
 ****************************************************************************/
Matrice Matrice::operator/(double valeur)
{
	Matrice result = Matrice(*this);
	for (int i=0; i<lignes_; i++) {
		for (int j=0; j<colonnes_; j++)
			result.matrice_(i,j) /= valeur;
	}
	return result;
}
开发者ID:ComtoisOlivier,项目名称:spinalcordtoolbox,代码行数:15,代码来源:MatrixNxM.cpp

示例6: testMGD

void testMGD()
{
	Quadruplet pQUAconfig[3];
	pQUAconfig[0] = Quadruplet(PI/2, 2, PI/2, 0);
    pQUAconfig[1] = Quadruplet(0, 0, 0, 1);
	pQUAconfig[2] = Quadruplet(0, 0, 0, 1);

	Matrice m = Robotique::ROBcalculMGD(pQUAconfig, 3);
	m.MATprint();
}
开发者ID:tangwing,项目名称:Robotology,代码行数:10,代码来源:main.cpp

示例7: main

int main()
{
	Matrice A;
	Element elem1(3,0,0);
	Element elem2(2,1,1);
	Element elem3(1,0,4);
	A.ajouterElement(elem1);
	A.ajouterElement(elem2);
	A.ajouterElement(elem3);
	A.afficher();
	A.afficheCreuse();
	return 0;
}
开发者ID:MeryllEssig,项目名称:fdsinfo,代码行数:13,代码来源:main.cpp

示例8: sprintf

void DrImage::Cut(){
  char cImage[160];
  sprintf(cImage,"Small.png");
  double pixel[4];
  double xBound[2] = {.5,.75};
  double yBound[2] = {.2,.45};
  int xNBound[2];
  int yNBound[2];
  for(int d=0;d<2;d++){
    xNBound[d] = (int)(xBound[d]*NWidth);
    yNBound[d] = (int)(yBound[d]*NHeight);
    printf("%d %d %d %d\n",xNBound[d],NWidth,yNBound[d],NHeight);
  }
  int Dx = xNBound[1]-xNBound[0];
  int Dy = yNBound[1]-yNBound[0];
  double *Plot = new double[Dx*Dy];
  Matematica *Mat = new Matematica;
  //VarData *Var = new VarData;
  Matrice *ImIn = new Matrice(Dx,Dy);
  pngwriter ImageOut(xNBound[1]-xNBound[0],yNBound[1]-yNBound[0],1.0,cImage);
  double Average = 0.;
  double Count = 0.;
  for(int h=yNBound[0];h<yNBound[1];h++){
    for(int w=xNBound[0];w<xNBound[1];w++){
      int hh = h -yNBound[0];
      int ww = w -xNBound[0];
      double Sum = data[0][h*NWidth+w]+data[1][h*NWidth+w]+data[2][h*NWidth+w];
      //Sum *= .5;
      // ImageOut.plot(ww,hh,data[0][h*NWidth+w],data[1][h*NWidth+w],data[2][h*NWidth+w]);
      ImIn->Set(ww,hh,Sum);
      Plot[hh*Dx+ww] = Sum;
    }
  }


  for(int h=0;h<Dy;h++){
    for(int w=0;w<Dx;w++){
      //if(ImIn->Val(w,h) >= 0.)
      ImageOut.plot(w,h,10.*ImIn->Val(w,h),ImIn->Val(w,h),ImIn->Val(w,h));
    }
  }
  ImageOut.close();
  delete [] Plot;
}
开发者ID:sabeiro,项目名称:Allink,代码行数:44,代码来源:DrImage.cpp

示例9: matrice_

/****************************************************************************
 * Fonction:	Matrice::Matrice
 * Description: Constructeur par copie
 * Paramètres:	Matrice à copier
 * Retour:		aucun
 ****************************************************************************/
Matrice::Matrice(const Matrice& uneMatrice)
{
	lignes_ = uneMatrice.lignes_;
	colonnes_ = uneMatrice.colonnes_;
	matrice_.setbounds(0,lignes_-1,0,colonnes_-1);
	for (unsigned int i=0; i<lignes_; i++)
	{
		for (unsigned int j=0; j<colonnes_; j++)
			matrice_(i,j) = uneMatrice.matrice_(i,j);
	}
}
开发者ID:ComtoisOlivier,项目名称:spinalcordtoolbox,代码行数:17,代码来源:MatrixNxM.cpp

示例10:

bool operator== (const Matrice<char> &a, const Matrice<char> &b)
{
	for (int i = 0; i < a.GetNbLignes(); i++)
	{
		if (a[i] != b[i])
		{
			return false;
		}
	}
	return true;
}
开发者ID:200755008,项目名称:StructureDon,代码行数:11,代码来源:Binairo.cpp

示例11: logiciel

/*
 * La fonction inverse utilise l'élimination de Gauss-Jordan pour générer une matrice inverse :
 * pour cela on utilise le pseudo-code trouver à cette adresse : http://fr.wikipedia.org/wiki/%C3%89limination_de_Gauss-Jordan#Pseudocode
 * On effectue les opérations sur la matrice à inverser et sur une matrice identité de même dimension.
 * Lorsque l'algorithme est terminé, la matrice identité a pris les valeurs de la matrice inverse.
 * La matrice à inverser a pris les valeurs de sa matrice échelonnée réduite.
 */ 
Matrice Matrice::Inverse() const
{
	int r = -1; //Attention au indices décalés dans notre logiciel (0 -> -1)
	Matrice inversible(*this);
	Matrice resultat = Identite();
	
	for(int j = 0; j < m_colonnes; j++)
	{
		//Recherche du maximum
		int k = r + 1; //<Position du maximum
		for(int i = k + 1; i < m_lignes; i++) // pas besoin de comparer la case de la ligne k avec elle-même
		{
			if(fabs(inversible.ObtenirValeur(i, j)) > fabs(inversible.ObtenirValeur(k, j)))
				k = i;
		}
		
		if(inversible.ObtenirValeur(k, j) != 0.f) //Si le max est != de 0
		{
			//Incrémentation de r
			r++;
			
			//Echange des lignes k et r
			inversible = inversible.InversionLignes(r, k);
			resultat = resultat.InversionLignes(r, k);
			
			//Division de la ligne r par A[r,j]
			float coeff = inversible.ObtenirValeur(r, j); //< A[r,j]
			//On stocke la valeur avant dans la variable coeff car elle est susceptible d'être modifiée par la division
			for(int l = 0; l < m_colonnes; l++)
			{
				inversible.FixerValeur(r, l, inversible.ObtenirValeur(r, l) / coeff);
				resultat.FixerValeur(r, l, resultat.ObtenirValeur(r, l) / coeff);
			}
			
			//On parcourt toutes lignes
			for(int i = 0; i < m_lignes; i++)
			{
				if(i == r) //sauf la ligne r
					continue;
				
				//Soustraction de la ligne i par la ligne r multipliée par le coeff i;j
				float coeffIJ = inversible.ObtenirValeur(i, j); //< A[i,j]
				//Pour les mêmes raisons que l'on garde A[r,j] dans coeff, on garde A[i,j] dans coeffIJ.
				for(int l = 0; l < m_colonnes; l++)
				{
					inversible.FixerValeur(i, l, inversible.ObtenirValeur(i, l) - inversible.ObtenirValeur(r, l) * coeffIJ);
					resultat.FixerValeur(i, l, resultat.ObtenirValeur(i, l) - resultat.ObtenirValeur(r, l) * coeffIJ);
				}
			}
		}
	}
	
	return resultat;
}
开发者ID:zer0tonin,项目名称:NF05lab,代码行数:61,代码来源:Matrice.cpp

示例12: EstLigneEquilibree

bool Binairo::EstLigneEquilibree(Matrice<char> m, int ligne)
{
	// Compter le nombre de fois que la valeur donnée apparaît dans le Ligne
	compteurLigneZERO = 0, compteurLigneUN = 0;
	for (int j = 0; j < m.GetNbColonnes(); j++)
	{
		if (binairoGrille[ligne][j] == '0')
		{
			compteurLigneZERO++;
		}
		if (binairoGrille[ligne][j] == '1')
		{
			compteurLigneUN++;
		}
	}
	if (compteurLigneZERO != compteurLigneUN)
	{
		return false;
	}
	else
	{
		return true;
	}
}
开发者ID:200755008,项目名称:StructureDon,代码行数:24,代码来源:Binairo.cpp

示例13: EstColonneEquilibree

bool Binairo::EstColonneEquilibree(Matrice<char> m, int colonne)
{
	// Compter le nombre de fois que la valeur donnée apparaît dans le Colonne
	compteurColonneZERO = 0, compteurColonneUN = 0;
	for (int i = 0; i < m.GetNbLignes(); i++)
	{
		if (binairoGrille[i][colonne] == '0')
		{
			compteurColonneZERO++;
		}
		if (binairoGrille[i][colonne] == '1')
		{
			compteurColonneUN++;
		}
	}
	if (compteurColonneZERO != compteurColonneUN)
	{
		return false;
	}
	else
	{
		return true;
	}
}
开发者ID:200755008,项目名称:StructureDon,代码行数:24,代码来源:Binairo.cpp

示例14: main

int main()
{
    
    
    cout<<"Welcome to matrix operation program"<<endl;
    
    cout<<"This program is developed for matrix operation, first matrix is read by a file"<<endl;
    
    cout<<"You must give dimensions of second matrice and program will generate a matrix with random values, then you can go to matrix operations."<<endl;
    cout<<endl;
    
    // File handling part
    
    Matrice FileMatrice ;
    
    FileMatrice.readLinesFromFile() ;
    
    cout<< "Here is a matrix with size: "<<FileMatrice.rowSize<<"x"<<FileMatrice.columnSize<<endl;
    
    FileMatrice.printMatrice();
    

    // create a random matrice struct called RandomMatrice
    
    Matrice RandomMatrice ;
    
    // we should get the dimension from the user in this scheme: row x column
    // so I am creating a string with 3 bytes to get it
    
    char getMatriceSize[3] ;
    cout << "Please enter the dimensions of the matrice (e.g. 2x3):" ;
    cin  >> getMatriceSize ;
    cout << "Here is a matrice with size of "<< getMatriceSize << "\n" ;
    //  we can add exception here in case of user enters invalid size
    
    // In order to get the size, I subtsracted ascii value '0' from the char value
    RandomMatrice.rowSize = getMatriceSize[0]-'0';
    //cout << "Row size "<< rowSize << "\n" ;
    
    // Same operation for column size of the matrice
    RandomMatrice.columnSize = getMatriceSize[2]-'0';
    //cout << "Column size "<< columnSize << "\n" ;
    
    // allocate memory for given dimension in random matrice
    RandomMatrice.allocateMemoryForMatriceElements() ;

    // get random values for the matrice
    //for random values
    srand(time(NULL));
    RandomMatrice.getRandomValuesForMatriceElements() ;
    
    
    // print the matrice with new elements
    RandomMatrice.printMatrice() ;

    RandomMatrice.bindMatriceElements() ;
    
       
    
    // Menu
    
    
    bool menuChoice = true;            //  boolean value for menu choice (continue ? (Y or N))
    char operationChoice ;             // char value for menu operations 
    char askIfTheUserWantsToContinueOperations ;
    while (menuChoice){
    
        cout << "\t\t\tMatrice Operation Menu\n" ;
        cout << "Select one of the matrice operations: \n" ;
           
        cout<< "1. Multiply the matrices and print the result to the screen.(M)\n"<<
            "2. Find transpose of the matrices (both) and print them to the screen.(T)\n"<<
            "3. Check if the matrices are symmetric.(S)\n"<<
            "4. Check if the matrices are zero matrix.(Z)\n"<<
            "5. Calculate the determinant of the matrices.(D)\n";
        
        cin>> operationChoice ;
        
        switch (operationChoice) {
            case 'M' | 'm':
                matrixMultiplication(FileMatrice, RandomMatrice);
                break;
            case 'T' | 't':
                //statements
                transpozeOperation(FileMatrice, RandomMatrice);
                break;
            case 'S' | 's':
                //statements
                checkIfSymmetric(FileMatrice, RandomMatrice);
                break;
            case 'Z' | 'z':
                //statements
                checkIfZeroMatrix(FileMatrice, RandomMatrice);
                break;
            case 'D' | 'd':
                //statements
                determinantOperation(FileMatrice, RandomMatrice);
                break;
            default:
                break;
//.........这里部分代码省略.........
开发者ID:dcdogan,项目名称:Matrices,代码行数:101,代码来源:MatriceProgram.cpp

示例15: afficheCalcul

/*!
 * \fn  void afficheCalcul(std::string& user, const int type)
 * \brief Affiche Le Calcul de matrice
 */
void afficheCalcul(std::string& user, const int type)
{
	int maxChoix = 0, choix1 = 0, choix2 = 0, val = 0;
	double v = 0;
	std::string mat1 = "", mat2 = "", info = "";
	Matrice *A = NULL, *B = NULL;

	maxChoix = afficheSM(type);

	if (type == 1 || type == 2 || type == 3) {
		if(maxChoix > 1)	  std::cout << "  - Veuillez indiquer votre choix (1 à " << maxChoix << ", r, q ou x[choix] pour supprimer) : ";
		else if(maxChoix == 1) std::cout << "  - Veuillez indiquer votre choix (1 , r, q ou x1 pour supprimer) : ";
		else		  std::cout << "  - Veuillez créer des matrices (r ou q) : ";

		getline(std::cin, user);
		choix1 = atoi(user.c_str()); // on change string en int

		std::cout << "  - Veuillez indiquer votre choix pour le squalaire : ";
		getline(std::cin, user);
		if (type == 3) {
			val = atoi(user.c_str());
		}
		else {
			v = atof(user.c_str());
		}
	}
	else if (type == 4 || type == 5 || type == 6 || type == 7) {
		if (maxChoix > 1) {
			std::cout << "  - Veuillez indiquer votre choix comme matrice (1 à " << maxChoix << ", r, q ou x[choix] pour supprimer)" << std::endl;
			std::cout << "  - Veuillez indiquer votre choix pour la première matrice : ";
			getline(std::cin, user);
			choix1 = atoi(user.c_str()); // on change string en int

			if (user[0] != 'x') {
				std::cout << "  - Veuillez indiquer votre choix pour la deuxieme matrice : ";
				getline(std::cin, user);
				choix2 = atoi(user.c_str()); // on change string en int
			}
		}
		else if (maxChoix == 1) {
			std::cout << "  - Veuillez créer des matrices ou le calcul ce fera sur la matrice elle meme (1 , r, q ou x1 pour supprimer) : ";
			getline(std::cin, user);
			choix1 = atoi(user.c_str()); // on change string en int
			choix2 = choix1;
		}
		else {
			std::cout << "  - Veuillez créer des matrices (r ou q)";
		}
	}

	if (user != "q" && user != "r" && user[0] != 'x') {
		if (((type == 1 || type == 2 || type == 3) && choix1 <= maxChoix && choix1 > 0) || ((type == 4 || type == 5 || type == 6 || type == 7) && choix1 <= maxChoix && choix1 > 0 && choix2 <= maxChoix && choix2 > 0)) //Test si le choix est valide
		{
			mat1 = trouveFichier(choix1);
			A = new Matrice("./mat/"+mat1);

			if (type == 4 || type == 5 || type == 6 || type == 7) {
				mat2 = trouveFichier(choix2);
				B = new Matrice("./mat/"+mat2);
			}

			if (type == 1) {
				*A *= v;
			}
			else if (type == 2) {
				*A /= v;
			}
			else if (type == 3) {
				A->Pow(val);
			}
			else if (type == 4) {
				*A += *B;
			}
			else if (type == 5) {
				*A -= *B;
			}
			else if (type == 6) {
				*A *= *B;
			}
			else if (type == 7) {
				A->Hadamard(*B);
			}

			std::cout << std::endl << *A << std::endl << "  - Voulez vous sauvegarder la matrice ? (y, n) : ";
			getline(std::cin, user);

			if (user == "y") {
				std::cout << "  - Veuillez donner un nom à la matrice : ";
				getline(std::cin, user);

				saveBdd(user, A);			
			}

			delete A;
			A = NULL;
			delete B;
//.........这里部分代码省略.........
开发者ID:vlekev,项目名称:genimatrice,代码行数:101,代码来源:menu.cpp


注:本文中的Matrice类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。