Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Lineare Interpolation (https://www.delphipraxis.net/50013-lineare-interpolation.html)

Six 20. Jul 2005 13:02

Re: Lineare Interpolation
 
Hi mschaefer,

danke für deine Antwort, aber ist das nicht im Grunde genau das, was ich auch schon implementiert habe?

Meine Erfolge damit kennst du ja...

lg

Six

marabu 20. Jul 2005 14:42

Re: Lineare Interpolation
 
Hallo Six,

dann wollen wir mal...

Sei f0 die Startfrequenz, fn die Endfrequenz, t0 = t(f0) die Dauer eines Schaltzyklus, n die Anzahl der Schaltzyklen, T das abzudeckende Zeitintervall und d die Zeitdifferenz zweier aufeinander folgender Schaltzyklen. Summe(i, 1, n) sei die Notation für die Summe der ersten n Zahlen.

Gesucht werden die Einschaltzeiten bei vorgegebenem T und der Randbedingung, dass die t(f) eine arithmetische Reihe bilden.

Nach der allgemeinen Summenformel für die arithmetische Reihe ist dann T = Summe(t0 + i*d, 0, n)
oder nach Gauss T = t0 (n + 1) + d (n (n + 1) / 2)
Das lässt sich auflösen nach d = (T - 2 t0 (n + 1)) / (n (n + 1))

Wenn du jetzt noch n vorgibst, dann kannst du d bestimmen und in die allgemeine Summenformel einsetzen. Dann kannst du iterativ die Einschaltzeiten berechnen und wenn du noch das konstante Verhältnis von Ein- zu Ausschaltdauer in Ansatz bringst, dann hast du auch noch deine Ausschaltzeiten. Mir ist bewusst, dass T mit einer Pause endet. Eventuell musst du beim Laufindex eine mögliche off-by-one Falle beachten. Jetzt müsste das noch einer Korrektur lesen.

Leg los.

marabu

Six 20. Jul 2005 16:45

Re: Lineare Interpolation
 
Hi marabu,

danke für deine Antwort, doch nach mehrmaligem durchlesen und verstehen versuchen, muss ich mir eingestehen, dass ich keinen blassen Schimmer habe, was ich machen soll. Bitte bedenke, ich habe bisher weder ein Mathe-, noch ein Informatikstudium hinter mich gebracht. :?

Bedeutet Summe(i,1,n) ganz einfach i+1+n?

Meinst du mit n die Herzzahl und wenn ja, welche der beiden? Ansonsten habe ich KEIN n.

Was ich habe ist die Startfrequenz, Endfrequenz und ein Zeitintervall, in dem das ganze ablaufen soll. Am Ende soll das ganze dann so aussehen, wie auf der grünen Zeichnung (nicht als Zeichnung sondern als Werte in einer Tabelle).Vielleicht habe ich mich da noch nicht deutlich genug ausgedrückt.

Was meinst du mit der "off-by-one Falle". Sorry, aber du sprichst hier mit einem Hobbyprogrammierer und keinem Experten.

Bitte formuliere das ganze doch ein wenig allgemeiner verständlich :zwinker:

Dankeschön!

Six

marabu 20. Jul 2005 17:24

Re: Lineare Interpolation
 
Hi Six,

Zitat:

Zitat von Six
danke für deine Antwort, doch nach mehrmaligem durchlesen und verstehen versuchen, muss ich mir eingestehen, dass ich keinen blassen Schimmer habe, was ich machen soll. Bitte bedenke, ich habe bisher weder ein Mathe-, noch ein Informatikstudium hinter mich gebracht.

ähm - das war die Fassung für Laien...

Zitat:

Zitat von Six
Bedeutet Summe(i,1,n) ganz einfach i+1+n?

Summe(i,1,n) steht für die Summe aller i, wobei du für i nacheinander die Werte 1 bis n einsetzt.

Zitat:

Zitat von Six
Meinst du mit n die Herzzahl

du denkst zuviel ans Kartenspiel...

Zitat:

Zitat von Six
Ansonsten habe ich KEIN n.

Das ist ja das Problem. Ich kann momentan nicht erkennen, wie die Aufgabe zu lösen sein soll, ohne dass du die Anzahl an Schaltzyklen vorgibst.

Zitat:

Zitat von Six
Vielleicht habe ich mich da noch nicht deutlich genug ausgedrückt.

Glaube mir, für mich reicht es.

Zitat:

Zitat von Six
Was meinst du mit der "off-by-one Falle".

Darüber reden wir noch, wenn du den Prototypen entwickelt hast.

So ein schöner thread und wir beide haben ihn ganz alleine für uns...

marabu

Six 20. Jul 2005 17:44

Re: Lineare Interpolation
 
Hi marabu,

Zitat:

ähm - das war die Fassung für Laien...
Zitat:

du denkst zuviel ans Kartenspiel...
Zitat:

Glaube mir, für mich reicht es.
Zitat:

So ein schöner thread und wir beide haben ihn ganz alleine für uns...
Ich weiß nicht was du mit diesen Aussagen bezwecken willst. Auf mich wirken sie jedenfalls ziemlich erniedrigend. Ich habe den Eindruck du findest das ganz lustig hier mit meiner "Unwissenheit" zu spielen, obwohl du die Lösung bereits kennst.

Wenn ich wüsste, wie es geht, hätte ich hier sicher nicht gefragt und deine "Laienversion" hilft mir ohne weitere Kenntnisse leider nicht weiter. Wenn du mir also wirklich helfen willst, sag was du weißt und nimm den Zeigefinger runter :wink:

Das Problem sollte sich meiner Ansicht nach mit einer Start- sowie Endfrequenz und einem Zeitintervall lösen lassen. Haufenweise anderer Programme lösen das Problem mit den gleichen Informationen.

mfg

Six

marabu 20. Jul 2005 18:16

Re: Lineare Interpolation
 
Zitat:

Zitat von Six
Ich habe den Eindruck du findest das ganz lustig hier mit meiner "Unwissenheit" zu spielen, obwohl du die Lösung bereits kennst.

Du täuschst dich. Es tut mir sehr leid, wenn mein Anflug von Humor diesen Eindruck bei dir hinterlässt. Nochmal mit allem Ernst: ich bemühe mich wirklich um eine Darstellung für Nicht-Mathematiker. Der Namensgeber für die Einheit der Frequenz schrieb sich mit tz und mein verschlüsselter Hinweis hat ein wunderbares Versmaß. Dann wollte ich dich von weiteren Versuchen abhalten mir dein Problem zu erklären, nachdem ich ziemlich sicher bin, dass ich es schon beim ersten Lesen verstanden habe. Und zuguterletzt würde ich mir wirklich wünschen eine Meinung von dritter Seite zum Stand meiner Überlegungen zu lesen.

Es ist so, wie ich es sage. Solange keine Anzahl für die (immer kleiner oder größer werdenden) Schaltzyklen vorgegeben wird, sehe ich keine Möglichkeit zur Berechnung einer eindeutigen Lösung. Mir fällt auf die Schnelle auch keine Optimierungsfunktion ein, an deren Haaren ich mich aus diesem Sumpf ziehen könnte.

marabu

Six 20. Jul 2005 18:26

Re: Lineare Interpolation
 
Zitat:

Du täuschst dich. Es tut mir sehr leid, wenn mein Anflug von Humor diesen Eindruck bei dir hinterlässt.
Ok, marabu, dann tut es mir leid, dich dessen verdächtigt zu haben! Bitte ab jetzt keine verschlüsselten Humorbotschaften mehr :wink:

Nun noch mal zum Problem. Da du es ja offenbar verstanden hast, kann ich mir zum Glück weitere Ausführungen sparen. Was sagst du denn zu meinem Code, der zumindest schon mal ein Ergebnis liefert, welches in die richtige Richtung geht (siehe Anhang). Kann man auf diese Weise nicht noch irgend etwas erreichen?

Six

mschaefer 20. Jul 2005 18:41

Re: Lineare Interpolation
 
Moin, moin,

also ehrlich gesagt habe ich mich jetzt mit den Reihen nicht beschäftigt. Denke schon das es damit irgendwie geht, aber der Aussetzter in obigen Bild hat nichts mit der linearen Interpolation zu tun. Da ist ein Umsetzungsfehler drin. Die Zeitindexe dürfen sich nicht überschneiden, dann kommen diese Zeichenfehler durch überzeichnen. Da ich wenig Zeit im Moment habe würde ich folgendes Vorschlagen. Six bau doch mal ein kurzes Projekt zusammen, was folgende Aufgabe erledigt.

Es soll eine Funktion haben die nur eine Schwingung zeichnet 01 halt. Die Zeichenstelle ergibt sich aus dem Zeitindex und die Zeichenbreite / Strichbreite und Leerbreite aus der übergebenen Hertzzahl.



Den Rest mit den Interpolationsfunktionen können wir dann zusammen einsetzten. Vielleicht auch mal was anderes als nur linear.
Das Problem an Deinem Beispiel oben ist in der Zeitindexansteuerung zu sehen. Du Interpolierst einen Zeitindex mit einer Schwingung
jetzt kommt der nächste Zeitindex. Wie lange der aktuelle Index allerdings ist hängt an der Hertzzahl. Das heißt Du würdest das allgemein folgend aufbauen.

Solage bis Endzeitindex erreicht
-Funktion 1: Ermittler Hertzzahl/Frequenz durch Interpolation aus den Start/Endwerten zum Zeitindexe x
-Funktion 2: Ermittle länge des Zeitindex x aus Hertzzahl
-Funktion 3: Setze Position aus Addition der letzten Zeitindexsumme plus des aktuellen Zeitindexes (marabus Reihenidee(?))
Solange Ende

Macht es Schrittweise, es ist schon der richtige Weg // Martin

Six 21. Jul 2005 00:05

Re: Lineare Interpolation
 
Ich hätte es zwar selber nicht mehr gedacht, aber ich habe eine Lösung gefunden. Für alle die es interessiert werde ich sie morgen posten. Vielen Dank noch mal an alle, die mir versucht haben zu helfen.

mfg

Six

runger 21. Jul 2005 05:28

Re: Lineare Interpolation
 
Hallo Six,

lineare Interpolation, Abitur und nie was davon gehört?
Da musst du aber schwer geschlafen haben. (Pisa lässt grüssen)
Sieh mal in deinen Schulbüchern nach unter lineare Funktionen f(x)=mx+b
Genau das ist es nämlich was du brauchst.

Rainer
(ich glaube hier will einer aus Klasse 9 seine Hausaufgaben lösen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz