Hallo zusammen,
ich habe hier ein "kleines" Problem. Und zwar progge ich unter Fedorra 7 in Eclipse, weil es sein muss, naja
Zumindest, kann man das Projekt in zwei Teile Unterteilen, im ersten Teil werden Bilder einer Kamera aufgenommen und einfach gespeichert.
Das Problem liegt aber im zweiten Teil, der Verarbeitung und ich hoffe wirklich sehr, dass ihr mir helfen könnt, weil ich bin mit meinem Latein wirklich am Ende.
Da ich davon ausgehe, dass der Fehler schon früher auftritt poste ich mal ich mal den ganzen Code für den zweiten Teil:
(Variablendeklaration habe ich TEILWEISE weggelassen!)
Alles anzeigen
ich habe hier ein "kleines" Problem. Und zwar progge ich unter Fedorra 7 in Eclipse, weil es sein muss, naja

Das Problem liegt aber im zweiten Teil, der Verarbeitung und ich hoffe wirklich sehr, dass ihr mir helfen könnt, weil ich bin mit meinem Latein wirklich am Ende.
Da ich davon ausgehe, dass der Fehler schon früher auftritt poste ich mal ich mal den ganzen Code für den zweiten Teil:
(Variablendeklaration habe ich TEILWEISE weggelassen!)
Quellcode
- int main(void)
- {
- /* create a new polynom */
- SENSOR_createpolynom(&stCurrentSensor);
- getchar();
- /* import a polynom */
- SENSOR_importPolynomCSV(&stCurrentSensor, impolynom);
- getchar();
- /* calculate the failure */
- for (f=0; f<=slFrameSize*3; f+=3)
- {
- tmp = (impolynom[f]*data[g]*data[g]) + (impolynom[f+1]*data[g]) + impolynom[f+2];
- data[g] = data[g] - tmp;
- g++;
- }
- SENSOR_exportPolyCSV(&stCurrentSensor,data,2);
- free(data);
- // free(impolynom);
- printf("ENDE!");
- return EXIT_SUCCESS;
- }
- int SENSOR_createpolynom (struct stSensorConfig *stCurrentSensor)
- {
- int slFrameSize = (stCurrentSensor->usResX-2)*stCurrentSensor->usResY; // Breite x Höhe = Gesamtpixelanzahl
- int data_pairs = 21; // Anzahl der einzulesenden Datein
- // VARIABLEN POINTER:
- int slCamCount = 0;
- char scLogTxt[64];
- float **createpolynom;
- float *polynom;
- // IMPORT DATEIEN:
- double height_fix[22]; // Speichern von fixen Höheninformationen (500 --> 1500)
- int fiftysteps=500; // benötigt für fixe Höhe (500 --> 1500)
- int fiftysteps_i; // zählt von 1 --> data_pairs damit die fixen Höhen gespeichert werden
- // KLEINSTE QUADRATE METHODE:
- int poly_degree = 2; //Grad des Polynoms
- int poly_degree_plus = poly_degree + 1; // m is degree of approximation + 1 --> m = 3; m1 = 2
- double height_dyn[22]; // Speichern der jeweiligen Höheninformation
- double temp_all[300]; // Speichert alle Werte erstmal ab
- int pixel; // damit jedes Pixel durchlaufen wird, 1 --> slFramesize
- int height_dyn_i; // i für height_dyn 1 --> data_pairs
- int save_i = 1;
- int save_j = 2;
- int temp_zero = 1;
- int degree = 1; // bestimmt wie oft die eigentliche Prozedur durchläuft, unteranderen abhängig vom polydegree
- int stop_degree; // wird entweder 1 oder -1 entscheidet ob degree weiter läuft
- double summe[10]; // speichert die Summe ab
- double w_summe; // wenn summe gebildet wird, wird die Wurzel genommen und hier gespeichert
- double quadrat[10]; // speichert die Quadrate temporär zwischen
- int i,j,L; // einfache Zählvariablen
- // AUSGABE KLEINSTE QUADRATE:
- int ausgabe_i = 1; // POTENZ VON X --> 1 = x0; 2 = x1 ...
- int ausgabe_j = 1;
- int position=0; // zählt von 1 --> slFramesize, damit Polynom wie eine Perlenkette aussieht und in Datei gespeichert werden kann
- /* =====================================================================================================
- * Erzeugung der Pointer
- */
- // -----------------------------------------------------------------------------
- // Polynom 21 x 3072 --> für die Rohdaten
- createpolynom = (float **)malloc((data_pairs) * sizeof(float));
- if(createpolynom == NULL)
- {
- sprintf(scLogTxt, "--> No virtual memory\n");
- printf(scLogTxt);
- return FALSE;
- }
- for(; slCamCount < slFrameSize; slCamCount++)
- {
- createpolynom[slCamCount] = (float *)malloc(slFrameSize * sizeof(float));
- if(createpolynom[slCamCount] == NULL)
- {
- sprintf(scLogTxt, "--> 1 No memory for row %d\n", slCamCount);
- printf(scLogTxt);
- return FALSE;
- }
- }
- // -----------------------------------------------------------------------------
- // Polynom 1 x 9216 --> für EINE Dateien
- polynom = (float *)malloc((slFrameSize*3) * sizeof(float));
- if(polynom == NULL)
- {
- sprintf(scLogTxt, "--> No virtual memory\n");
- printf(scLogTxt);
- return FALSE;
- }
- /* =====================================================================================================
- * Einlesen der verschiedenen Höhendateien
- */
- SENSOR_importPolynomCreate(stCurrentSensor,createpolynom); // speichert alle Werte von den Messungen in create polynom
- for (fiftysteps_i=1; fiftysteps_i<=(data_pairs);fiftysteps_i++) // speichern der einzelnen Entfernungswerte in ein neues Array
- {
- height_fix[fiftysteps_i] = fiftysteps; // speichern der "Höhe" 500 --> 1500
- fiftysteps+=50;
- }