Schrittweite bei floating point austüfteln ???



  • Erstmal bin ich der Meinung, das du was Anderes gesagt hast.

    Und Dir ist klar, das nur 3 Punkte der gesamte Kurve genommen werden nach deinem Vorschlag? Und das wären dann -1,0,1 bei -Pi/2, 0, Pi/2. Das sieht einfach nach einer steigenden Gerade aus, kaum jemand wird im Kopf daraus die Sinusfunktion rekonstruieren können.



  • @Finnegan sagte in Schrittweite bei floating point austüfteln ???:

    Ich meinte damit nicht, dass die so dargestellten Kurven dann eine vollständige, korrekte Rekonstruktion sind, sondern dass wenn ich mit dieser Methode z.B. eine Sinusfunktion darstelle, diese auch tatsächlich eine Periode von 2π zeigt und nicht 4π oder sowas - wenn auch ziemlich eckig angenähert. Das hätte ich vielleicht deutlicher einschränken sollen.

    ich denke so lange die grafik etwa 3 mal so breit wie hoch ist, geht das so. ich habe keine komplizierten wellenformen, bloß sinus, dreieck, rechteck, trapezförmig, sägezahn und ähnliche spielereien, die sich aus nem sinus berechnen lassen. es ist ein hobby-projekt, animiert durch dieses video: https://www.bitchute.com/video/gvHWPCpZfDmI/
    dieser mensch zählt übrigens eine double-variable hoch. 🙂



  • @hustbaer sagte in Schrittweite bei floating point austüfteln ???:

    @Finnegan Ich glaube eine häufige Variante ist es in jeder Pixelspalte eine vertikale Linie von min bis max der von dieser Pixelspalte abgedeckten Samples zu machen. Dadurch bekommst du dann einen fliessenden Übergang zwischen "Waveform" und dieser Darstellung mit den Knubbeln/dem dicker und dünner werdenden Balken bzw. wie auch immer man es nennen möchte.

    diese lücken und verdickungen sehe ich auch. vielleicht mache ich aus plot(x,y) ein drawto(x,y). mal sehen ...



  • @TGGC sagte in Schrittweite bei floating point austüfteln ???:

    Erstmal bin ich der Meinung, das du was Anderes gesagt hast.

    In Bezug auf die von SeppJ erwähnten Probleme bei Kurvenplots mit nur so wenigen Punkten habe ich geschrieben, dass sich damit "zumindest (die) Aliasing-Artefakte vermeiden lassen" (nicht alle Probleme). Das ist insofern mehrdeutig, als dass es hier zwei Phänomene gibt, wo man dieses Aliasing beobachten kann: Einmal die "Pixeltreppchen" als Aliasing der in dem erzeugten 2D-Bild überlagerten Frequenzen (was du wohl meintest). Zum anderen die falschen Frequenzen, die entstehen können, wenn man die sinusförmige Kurve mit zu wenig Pixeln in der Breite darstellt. Das ist alles, wo ich hier drauf hinaus wollte. Ich nenne auch den Blechsound, den man erhält, wenn man Audio mit zu niedriger Rate abtastet "Aliasing-Artefakte".

    Und Dir ist klar, das nur 3 Punkte der gesamte Kurve genommen werden nach deinem Vorschlag? Und das wären dann -1,0,1 bei -Pi, 0, Pi. Das sieht einfach nach einer steigenden Gerade aus, kaum jemand wird im Kopf daraus die Sinusfunktion rekonstruieren können.

    Ja, und wenn ich einen Ausschnitt der Kurve betrachte, der nur eine Höhe und keine Breite hat, dann sieht die Kurve wie ein einziger Punkt aus. Wenn du diese "Gerade" nämlich weiterzeichnest, dann erhältst du eine hübsche Sägezahnwelle mit einer Periode von eben 2π und nicht 42π. So banal ist das, wo ich drauf hinaus wollte und ich hatte nicht vor, das so ausarten zu lassen. Deine Interpretation ist zwar sehr naheliegend, war mir aber tatsächlich in dem Moment nicht bewusst, als ich das so formuliert habe.



  • @Bushmaster sagte in Schrittweite bei floating point austüfteln ???:

    diese lücken und verdickungen sehe ich auch. vielleicht mache ich aus plot(x,y) ein drawto(x,y). mal sehen ...

    Ajo, die weiterführende Diskussion mit "Aliasing" und so kannste erstmal ignorieren. Man kann soche Aufgaben nahezu beliebig perfektionieren 😉

    Ja, die simpelste Variante ist einfach die Lücken mit einer geraden Linie zu überbrücken. Ich wusste gar nicht, dass dir solche Funktionen wie drawto bereits zur verfügung stehen, das macht das natürlich noch etwas einfacher, als wenn man nur setpixel zur Verfügung hat.



  • @Finnegan sagte in Schrittweite bei floating point austüfteln ???:

    dass dir solche Funktionen wie drawto bereits zur verfügung stehen

    stehen sie nicht, aber man kann sie sich ja machen.



  • @Bushmaster sagte in Schrittweite bei floating point austüfteln ???:

    stehen sie nicht, aber man kann sie sich ja machen.

    Hah... habe tatsächlich "vielleicht mache ich das mit plot(x,y) und drawto(x,y)" gelesen. Muss aufpassen nicht schneller zu lesen als ich es verarbeiten kann 😉



  • @Finnegan sagte in Schrittweite bei floating point austüfteln ???:

    @Bushmaster sagte in Schrittweite bei floating point austüfteln ???:

    stehen sie nicht, aber man kann sie sich ja machen.

    Hah... habe tatsächlich "vielleicht mache ich das mit plot(x,y) und drawto(x,y)" gelesen. Muss aufpassen nicht schneller zu lesen als ich es verarbeiten kann 😉

    die plot-funktion gibt es auch nur, weil ich sie selber programmiert habe. das display ist zeichenweise organisiert. jedes zeichen selbst ist 8 bit breit und besteht aus 16 8-bit-wörtern von oben nach unten. ist man unten angekommen, geht es im zeichen rechts davon oben weiter.

    ist halt billigstes material aus china, aber sieht schick aus, erkennt touch-koordinaten und kann 4 farben darstellen. angesteuert über nen 2-draht-bus (spi) ist es schnell genug um videos abzuspielen. 🙂



  • @Finnegan sagte in Schrittweite bei floating point austüfteln ???:

    [...]Das ist insofern mehrdeutig, als dass es hier zwei Phänomene gibt, wo man dieses Aliasing beobachten kann: Einmal die "Pixeltreppchen" als Aliasing der in dem erzeugten 2D-Bild überlagerten Frequenzen (was du wohl meintest).

    Nein, davon redete ich nicht.

    @Finnegan sagte in Schrittweite bei floating point austüfteln ???:

    Wenn du diese "Gerade" nämlich weiterzeichnest, dann erhältst du eine hübsche Sägezahnwelle mit einer Periode von eben 2π und nicht 42π. So banal ist das

    Ja, und diese Sägezahnwelle enthält eben komplett andere Frequenzen, als die darzustellende Funktion, siehe dazu hier:
    https://www.mathe-online.at/mathint/fourier/grafiken/saegezahn4terme.gif Was im Bildbereich noch entfernte Ähnlichkeit hat sieht im Frequenzbereich komplett anders aus.

    Nur weil eine eindeutige Rekonstruktion aus diesen Samples möglich ist, heisst es nicht, das jedwede Rekonstruktion, (wie eine Step- oder Sägezahnfunktion) keine zusätzlichen Frequenzen enthält. Eigentlich ist genau das Gegenteil der Fall - jede Rekonstruktion erhält zusätzlichen Frequenzen bis auf genau die darzustellende Funktion. In der Praxis ist diese Rekonstruktion auch gar nicht möglich, daher wird man in praktischen Anwendungen immer oversamplen.



  • @TGGC sagte in Schrittweite bei floating point austüfteln ???:

    Ja, und diese Sägezahnwelle enthält eben komplett andere Frequenzen, als die darzustellende Funktion, siehe dazu hier:
    https://www.mathe-online.at/mathint/fourier/grafiken/saegezahn4terme.gif Was im Bildbereich noch entfernte Ähnlichkeit hat sieht im Frequenzbereich komplett anders aus.

    Ja, jetzt verstehe ich, wo du drauf hinaus willst. Ich habe mich hier in der Tat auf die visuelle Erscheinung im Ortsraum konzentriert. Ich habe Nyquist–Shannon mental auch haptsächlich als prektischen Richtwert abgespeichert, mit der sich (vor allem in der Bildverarbeitung) Aliasing minimieren lässt (z.B. beim herunterskalieren von Bildern, wo man erstmal mit einem Filter die hohen Frequenzen eliminiert).

    Ich sehe, dass ich mir das besser nochmal in Ruhe zu Gemüte führen und ein paar Dinge auffrischen sollte. Du scheinst dadoch ein paar Konsequenzen zu erkennen, die mir nicht auf Anhieb bewusst waren 😉


Anmelden zum Antworten