Rekursion mit C

Hallo!

ich will einen 4x4 array der mit Temperaturwerten(float) belegt ist, an einen 8x8 Array annähern! Also ich denke das wäre sowas wie Antialiasing nur in klein. Ich habe auch schon viel darüber gegooget aber eine Lösung habe ich bis jetzt leider nicht gefunden. Ich hoffe da muss man nicht mit einer Finite Differenzen Methode ran…
Ich habe sowas ähnliches in Excel gefunden:

http://www.akademie.de/wissen/excel-zirkelbezuege-re…

Will eigentlich das gleiche mit C hinkriegen…

Weiss da einer den Ansatz?

Hi,
leider, leider ist das im Link beigefügte Rechenbeispiel gerade die finite Differenzen Methode - praktisch druchgeführt - .
Um einen Ansatz für die Aufweitung (Verfeinerung des Messrasters) zu finden ist es notwendig, den Algorithmus für das 4x4 Array zu kennen. Mittelwertbildung ist ja nur eine Möglichkeit eines Algorithmus’.Sinnvollerweise würde ich aus nxn (2n+1)x(2n+1) machen. Die Werte an den Grenzen: Row 0, Row 2n+1, Column 0, Column 2n+1 leiten sich dann direkt aus den ursprünglichen ab.
Die „Innenfelder“ jetzt initialisieren, zB mit 0;
for(i=1; i 0.001)//Als Beispiel
{
for()
{Differenzenbildeung im Aufgeweiteten Array;
diese in Temparray eintragen;
if(abs(tempelem(i,k) - aufgew.Array(i,k))>contr)//gr.globale Differenz
contr=abs(…);
aufgeweitetes Array = Temparray;
}//end for
Ich hoffe der Pseudocode taugt als erster Ansatz…
}// end while

int i;
for( i = 0; i

So ganz verstehe ich nicht, was Du erreichen möchtest. Aber Du solltest vielleicht einmal Stifft und Papier benutzen, und das, was Du haben möchtest, in einer Tabelle als Beispiel rechnen. Dabei wirst Du dann sicherlich ein paar Regeln erkennen, und die können dann in C-Code gegossen werden.

Hier sowas ähnliches, aber ich weiss nicht wie die das gemacht haben…

http://www.youtube.com/watch?v=G-aV3H8OVAQ

Das aufzuschreiben hab ich auch schon probiert nur ich kann mir so eine Regel in einem 1D-Array vorstellen aber in 2D!

Danke Thoralf!

ich versuch dann man den Code umzusetzen, wird doch schwieriger als ich gedacht habe…

Hi
hab nochmal kurz drübergeschaut - bei den RANDelementen i.d. for Schleife muss es natürlich i=0;i konkreterWert gewählt wird, dieser auch irgendwann unterschritten werden, d.h. das ganze MUSS gegen Endwerte in JEDEM einzelnen Element konvergieren, ansonsten unendliche Schleife …

Versuch es doch erstmal iterativ mit for Schleifen. Das kannst Du dann später immer noch auf Rekursion umstellen.

Ich versuche mal die Logik in Worten zu fassen.
Nehmen wir mal an, Du möchtest das 4x4 Array in der Mitte von dem 8x8 Array einfügen, und die Werte der anderen Zellen, die sich nicht in dem 4x4 Quadrat befinden, zum Rand hin linear abschwächen. Dann solltest Du die Werte, der zu füllenden Zellen, um die Differenz von der Position der Zelle zum Startpunkt in dem 4x4 Array reduzieren.
An den Ecken musst Du noch den Durchschnitt von den Werten in horizontaler und waagerechter Richtung bilden.

Bau dir einen Unit -Test! Mit dem kannst Du das Ergebnis mit Deiner Erwartung vergleichen. So kannst Du dich langsam der Lösung annähern.

Ich kann Die die Lösung leider nicht auf dem silbernen Tablett servieren. Aber es klingt nach einer interessanten Aufgabe, wo Du selbst ein wenig nachdenken musst.

Nein, nicht das 4x4 Array in die Mitte einfügen. Eigentlich will ich nur so zu sagen die „Auflösung“ verbessern. Also wenn ich z.B in einer Dimension den Wert 20 habe und der Wert daneben wäre 30, dann wäre der wert dazwischen 25 aber auch nur wenn man aus 4 Werten in einer Dimension insgesamt 9 Werte macht. Bei 8 Werten wäre es wieder was anderes. Dazu kommt noch dass das Ganze in 2D von einander anhängig ist…Also ich muss sagen das ist schon schwer in Worte zu fassen…
Das kann man auch so mit Papier und Stift analytisch gar nicht lösen.

Ich weiss nicht mehr weiter Leute ;-(

Ne, war gerade falsch von mir,das mit der 20 und 30 würde auch nur mit zwei Werten funktionieren, wenn es mehr wären würden ja die auch wieder von ihren Nachbarwerten abhängen…

Hallo,

bei dieser Frage kann ich leider nicht weiterhelfen.

Ein schöner Gruß,
Harald