mikrocontroller.net

Forum: Offtopic Spektrum als Wasserfall dargestellt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin O. (ossi-2)


Bewertung
0 lesenswert
nicht lesenswert
Hat jemand von euch schon mal die Darstellung des zeitlichen Verlaufs 
eines Spektrums (berechnet per FFT) als Wasserfall dargestellt? Mich 
würde interessieren wie man die Sichtbarkeitsprüfung für die Linien 
durchführt.

: Verschoben durch Moderator
von Gustl B. (gustl_b)


Bewertung
0 lesenswert
nicht lesenswert
Du berechnest eine FFT, die Amplitude wird über eine LUT oder Funktion 
auf eine Farbe abgebildet und dann hast du eine Zeile vom Wasserfall. 
Mit der nächsten FFT gibt es die nächste Zeile.
Wasserfall kannst du dir vorstellen als würdest du von oben auf viele 
FFTs gucken. Die Höhenonformation ist dann als Farbe dargestellt.

Aber ... falsches Unterform.

von c r (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> die Sichtbarkeitsprüfung

Was für 'ne Sichtbarkeitsprüfung? Was willst du denn eigentlich machen?

von Martin O. (ossi-2)


Bewertung
0 lesenswert
nicht lesenswert
Beim Wasserfalldisplay

https://www.eddylab.de/wirbelstromsensoren/eddylab/csm_waterfall_e28f48306b.jpg

verdecken vordere Linien teilweise den hinteren Bereich. Das muss man 
algorithmisch beim Zeichnen testen.

von tja (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> https://www.eddylab.de/wirbelstromsensoren/eddylab/csm_waterfall_e28f48306b.jpg
>
> verdecken vordere Linien teilweise den hinteren Bereich. Das muss man
> algorithmisch beim Zeichnen testen.

für mich eine falsche Darstellungsform. Mach es einfach 2D!!!

von c r (Gast)


Bewertung
0 lesenswert
nicht lesenswert
tja schrieb:
> für mich eine falsche Darstellungsform. Mach es einfach 2D!!!

Absolut. Die dritte Dimension (Amplitude) wird schon durch die Farbe 
codiert.

Sie nochmals als Höhe darzustellen ist redundant. Hübsch anzusehen, aber 
bringt sonst nur Nachteile.

von 2⁵ (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> Mich würde interessieren wie man die Sichtbarkeitsprüfung für die Linien
> durchführt.

Der einfachste Algorithmus ist, mit einer Zeile Time (z.B. bei -49ms) 
anzufangen und Zeile für Zeile nach vorne (Richtung 0 ms) zu zeichnen.
Die Zeilen (Frequency) werden dann jeweils von 0 Hz bis 3500 Hz 
gezeichnet.

von c r (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich bin mir recht sicher, dass hier nicht Linie für Linie gezeichnet 
wird, sondern das Spektrum zunächst mit Polygonen dargestellt und dann 
gerendert wird.

Sonst wirds z. B. mit der Kantenglättung sehr schwer.

von Vlad T. (vlad_tepesch)


Bewertung
1 lesenswert
nicht lesenswert
Martin O. schrieb:
> Beim Wasserfalldisplay
>
> https://www.eddylab.de/wirbelstromsensoren/eddylab/csm_waterfall_e28f48306b.jpg
>
> verdecken vordere Linien teilweise den hinteren Bereich. Das muss man
> algorithmisch beim Zeichnen

Die Matrix aus den berechneten FFTs wird einfach als heightmap 
gerendert.
Die Darstellung von Verdeckung und so macht die Grafikkarte für dich, da 
brauchst du gar nix machen.

zB
--> 
https://stackoverflow.com/questions/35077435/webgl-heightmap-from-array

: Bearbeitet durch User
von Gustl B. (-gb-)


Bewertung
0 lesenswert
nicht lesenswert
Ist das Problem überhaupt lösbar in 3D wenn man den Blickwinkel oder 
anders die Höhe des Viewports über der XY-Plane und den Abstand des 
Viewports zum Ursprung nicht verändern darf? Sprich Drehen ist erlaubt, 
aber Neigen/kippen nicht.

Es könnte ja auch sein, dass das so aussieht wie cos(x)+cos(y). Je 
nachdem wie weit es da hinunter geht bei (0|0) muss man immer 
senkrechter von oben gucken wenn man wirklich jeden Punkt erkennen 
können will.

Ich würde das einfach 2D machen, weil wie schon erwähnt wurde das 3D 
hier keine weitere Information kodiert.

Jetzt haben sin() und cos() keine Sprünge, aber echte Wasserfallspektren 
sehr wohl, z. B. wenn der Sender ein und aus schaltet. Dann hat man in 
einem 3D Gebirge sehr steile Wände und muss fast zwingend von oben drauf 
gucken um die Punkte unten am Boden zu erkennen.

Edit:

Martin O. schrieb:
> Beim Wasserfalldisplay
>
> https://www.eddylab.de/wirbelstromsensoren/eddylab/csm_waterfall_e28f48306b.jpg
>
> verdecken vordere Linien teilweise den hinteren Bereich. Das muss man
> algorithmisch beim Zeichnen testen.

Um was geht es eigentlich? Das zu zeichnen wie dort im Bildchen oder 
möchtest du das immer so zeichnen, dass nichts verdeckt wird?

Wenn Verdeckungen OK sind, dann gibt es in Python die matplotlib 
https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html .

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.