Erstellung eines verzogenen Gitters



  • Hallo,

    ich habe folgendes Problem:

    Für die Auswertung von Messdaten möchte ich u.a. die NAG-Funktion "nag_2d_spline_interpolant" verwenden. Ich lese die Messpunkte mit einer Schleife so aus, dass 2 Vektoren mit folgendem Muster entstehen:

    1.20 1.20
    1.20 1.10
    1.20 1.00
    ...
    1.10 1.20
    1.10 1.10
    ...

    Das Problem ist, dass die NAG-Funktion nur mit Vektoren arbeitet, die strikt steigend geordnet sind, also auch keine Widerholungen enthalten. Hat jemand eine Idee, wie ich eine solche Schleife aufbauen kann, damit die die Werte jeweils etwas verschoben ausliest, also z.B.:

    1.20 1.20
    1.199 1.10
    1.198 1.10
    ...
    1.189 1.199
    1.188 1.198
    ...

    Wenn man sich die Punkte als Gitter vorstellt, müssten Sie also statt eines Rechtecks ein Parallelogramm bilden.

    Viele Grüße und vielen Dank für die Hilfe,
    Jürgen

    -----------------------
    Mein bisheriger Code, der mit ein gleichmäßiges Gitter erstellt:

    ...
    // Definieren von Vektoren, die die Datensaetze enthalten und fuer die Berechnung verwendet werden koennen
    vector v_Beta_ohne(ds_Beta_ohne);
    vector v_Beta_QS_1(ds_Beta_QS_1);
    vector v_Beta_QS_2(ds_Beta_QS_2);
    
    // temporaeren Vektor mit den Resten aus der Anpassung des QS-Vektors definieren
    vector v_Residues_QS;
    
    // temporaere Vektoren fuer die Summe der Reste und die Skalierungsfaktoren erstellen
    vector v_Sum_Residues;
    vector v_SF_QS_1;
    vector v_SF_QS_2;
    
    for (double SF_1 = 1.2; SF_1 > 0; SF_1 = SF_1 - 0.1)
    {
    	vector v_Beta_QS_1a;
    	v_Beta_QS_1a = v_Beta_QS_1 * SF_1;
    
    	for (double SF_2 = 1.2; SF_2 > 0; SF_2 = SF_2 - 0.1)
    	{
    		vector v_Beta_QS_2a;
    		v_Beta_QS_2a = v_Beta_QS_2 * SF_2;
    
    		// Vektor fuer die Differenz zwischen den Vektoren definieren und Differenz berechnen
    		vector v_difference;
    		v_difference = v_Beta_ohne - (v_Beta_QS_1a + v_Beta_QS_2a);
    
    		// Variable fuer die Summe der absoluten Unterschiede zwischen beiden Vektoren definieren
    		double Residue;
    
    		// Funktion zum Berechnen der Summe der absoluten Werte der Elemente eines Vektors aufrufen 
    		absolute_vector_values(v_difference, Residue);	
    
    		// Rest und Skalierungsfaktor an die entsprechenden Vektoren anfuegen
    		v_Sum_Residues.Add(Residue);
    		v_SF_QS_1.Add(SF_1);
    		v_SF_QS_2.Add(SF_2);
    	}
    }
    ...
    

Anmelden zum Antworten