eigen - Library - Klassenarithmetik



  • hi!

    ich hab ein Problem bei dem ich ein bischen hilfe gebrauchen könnte 🙂

    ich benutze die Library "eigen", verstehe aber die klassenaufbau nicht so ganz.

    Problem:
    Ich habe ein Feld (2D) mit Stützpunken. Dieses möchte ich in kleinere Blöck zerlegen, die sich überschneiden. Dazu sortiere ich das Feld zuerest nach Dimension1 (kein Problem) und zerlege das große Feld in kleinere.

    Matrix<Matrix<float,Dynamic,Dynamic>,Dynamic,1> mA;
    	mA.resize(anz_grenzen);	
    	for(int i =0;i<anz_grenzen;i++)
    	{
    		mA(i).resize(faktor*o,2);	
    		for(int j =0;j<faktor*o;j++)
    		{
    			if(C.rows()== j+(faktor*i))
    			{
    					mA.resize(i+1);
    					anz_grenzen -=1;
    					break;
    			}
    
    			for(int k =0; k< dimension; k++)
    			{
    					mA(i)(j,k) = C(j+(faktor*i),k);
    			}
    		}
    	}
    

    soweit funktioniert das alles noch, jetzt möchte ich die kleinen Felder wieder aufspalten, diesmal jedoch in Dimension2. D.h. sortieren (auch das ist wieder kein problem), dann wieder zerlegen:
    meine idee

    Matrix<Matrix<Matrix<float,Dynamic,Dynamic>,Dynamic,1>,Dynamic,1> mAA;
    
    for(int q =0; q< anz_grenzen; q++){
    	int faktor2 = ceil(mA(q).rows()/float(anz_grenzen));
    	mAA.resize(q);
    	for(int i =0;i<anz_grenzen;i++){
    		mAA(q).resize(i);
    		mAA(q)(i).resize(faktor2*o,2);
    		for(int j =0;j<faktor2*o;i++)
    		{
    			for(int k =0; k< dimension; k++)
    			{
    					mAA(q)(i)(j,k) = mA(q)(j+(faktor2*o,k));
    			}
    
    		}
    	}
    }
    

    und das funktioniert leider nicht ... keine ahnung warum. Ich würd auch lieber

    Matrix<Matrix<Matrix<float,Dynamic,Dynamic>*,Dynamic,1>*,Dynamic,1> mAA;
    

    hab aber keine methode gefunden um die Werte zu bearbeiten bzw drauf zugreifen zu können "mAA->??(i,j)" ?!?
    -----------------------------------------------------------------
    lsg:
    (*mA)(i,j)

    funktionen und rekursion ist das zauberwort

    *closed!


Anmelden zum Antworten