AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Circular spectrum visualizer
Thema durchsuchen
Ansicht
Themen-Optionen

Circular spectrum visualizer

Ein Thema von EWeiss · begonnen am 22. Mär 2019 · letzter Beitrag vom 23. Jun 2019
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 17:34
32 := 2^5
128 := 2^7

Überprüf' bitte mal, ob FOctaveCount unter Delphi den gleichen Wert zugewiesen bekommt, wie unter VB.

Der Unterschied zwischen
Code:
pEx = ((2 ^ (mOctaveCount + 1)) / 2) ' in VB 128
und
Code:
pEx := (Power(2, FOctaveCount + 1) / 2); // in Delphi 32
wäre für meine Begriffe nur dadurch zu erklären, dass in Delphi FOctaveCount = 5 und mOctaveCount in VB = 7 ist.
Code:
pEx = ((2 ^ (7 + 1)) / 2) ' in VB 128
pEx = ((2 ^ (8)) / 2) ' in VB 128
pEx = ((256) / 2) ' in VB 128
pEx = (128) ' in VB 128
Code:
pEx := (Power(2, 5 + 1) / 2); // in Delphi 32
pEx := (Power(2, 6) / 2); // in Delphi 32
pEx := (64 / 2); // in Delphi 32
pEx := (32); // in Delphi 32
Da der Wert aus der Ini-Datei gelesen werden kann, prüf' bitte mal, ob es dort Unterschiede gibt.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 17:42
Zitat:
wäre für meine Begriffe nur dadurch zu erklären, dass in Delphi FOctaveCount = 5 und mOctaveCount in VB = 7 ist.
Ich habe mich da vertan

Vielleicht hast du die Korrektur übersehen.
Zitat:
sorry war verdreht..
pEx := (Power(2, FOctaveCount + 1) / 2);
warum ist in Delphi FOctaveCount = 5 ? ist das gleiche wie in VB "7" + die 1 dann 8 natürlich.
Ach so das war nur eine Annahme von dir.. Sorry habe ich falsch interpretiert.

so habe ich die 128..
frage mich aber noch was mit dem ist.
Zitat:
Mich irritieren die / 65536
Ist echt schwierig da auf den gleichen Nenner zu kommen.

gruss

Geändert von EWeiss (23. Mär 2019 um 17:46 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 18:30
Was ich jetzt mache, ist nur noch "Spekulatius"

 Out[p].r := (((Dat[i]) + Dat[i + 1]) / 65536) * Window_[p];

Dat = SmallInt -> -32768..32767
Dat[i] + Dat[i + 1] = maximal 65536.

Wenn also Dat[i] und Dat[i + 1] irgendwo zwischen 0 und 32767 liegen, kommt irgendwas zwischen 0 und 65536 bei der Addition heraus. Dividieren wir nun durch 65536, liegt das Ergebnis irgendwo zwischen 0 und 1.

Window_[*] wird in InitHamming befüllt.
Delphi-Quellcode:
for n := 0 to FFFTSize - 1 do
    Window_[n] := 0.53836 - 0.46164 * Cos(6.28318530717959 * n / (FFFTSize {- 1}));
Code:
For n = 0 To mFFTSize - 1
   Window(n) = 0.53836 - 0.46164 * Cos(6.28318530717959 * n / (mFFTSize - 1))
In der Delphiquelle ist das -1 auskommentiert. Kann mir zwar nicht vorstellen, dass das jetzt sehr gravierende Auswirkungen hat, aber wirklich weiß ich das nicht.

Könntest Du mal den Inhalt von Window_ jeweils ausgeben und die Werte dadrin miteinander vergleichen?

Wenn hier inhaltlich irgendwelche Unterschiede sein sollten, so kann das gravierende Auswirkungen auf die weiteren Berechnungen haben.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 18:57
Zitat:
Könntest Du mal den Inhalt von Window_ jeweils ausgeben und die Werte dadrin miteinander vergleichen?
Werde ich mal machen. .Danke

Zitat:
Wenn also Dat[i] und Dat[i + 1] irgendwo zwischen 0 und 32767 liegen, kommt irgendwas zwischen 0 und 65536 bei der Addition heraus. Dividieren wir nun durch 65536, liegt das Ergebnis irgendwo zwischen 0 und 1.
Scheint dann wohl in Ordnung zu sein das es mit 65536 dividiert wird.
Dachte nur der wert müsste höher sein.

gruss

Geändert von EWeiss (23. Mär 2019 um 19:00 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 21:05
Habe jetzt mal nur InitHamming Analysiert..
Daten sind wie folgt.
Code:
Delphi
// mit - 1
0,076719999313
0,076722174883
0,076728701591
0,076739571989
0,076754793525
0,0767743662
0,076798290014
0,076826557517
0,076859176159
0,076896138489

VB6
: Window(0) : 0,07672 : Single : modMain.InitHamming
: Window(1) : 7,672217E-02 : Single : modMain.InitHamming
: Window(2) : 0,0767287 : Single : modMain.InitHamming
: Window(3) : 7,673957E-02 : Single : modMain.InitHamming
: Window(4) : 7,675479E-02 : Single : modMain.InitHamming
: Window(5) : 7,677437E-02 : Single : modMain.InitHamming
: Window(6) : 7,679829E-02 : Single : modMain.InitHamming
: Window(7) : 7,682656E-02 : Single : modMain.InitHamming
: Window(8) : 7,685918E-02 : Single : modMain.InitHamming
: Window(9) : 7,689614E-02 : Single : modMain.InitHamming

Delphi
// ohne - 1
0,076719999313
0,076722174883
0,07672868669
0,076739549637
0,076754763722
0,076774314046
0,076798208058
0,076826453209
0,076859034598
0,076895967126
Wie man sehen kann weichen die Daten extrem von VB6 ab.
Habe mich gefragt warum. Das einzige das in frage kommt ist Cosinus "Cos"
Window_[n] := 0.53836 - 0.46164 * Cos(6.28318530717959 * n / (FFFTSize - 1));
also nur Cosinus analysiert und das kommt dabei raus.

VB6: Die ersten 10 Einträge
1
0,9999953
0,9999812
0,9999576
0,9999246
0,9998822
0,9998304
0,9997692
0,9996985
0,9996185
0,9995289

Delphi:
Die ersten 10 einträge von Cos() sind 1
von 11 > 18 ist die Value '0,999'

Nun da darf man sich nicht wundern das nichts funktioniert..
Was ist da wieder im argen.

Habe das Minus 1 wieder aktiviert.

gruss

Geändert von EWeiss (23. Mär 2019 um 21:11 Uhr)
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 21:36
Deine Berechnung:
VB Window(3) : 7,673957E-02
Delphi 0,076739571989

7,673957E-02 bedeutet 7,673957 * 10^(-02) = 0,07673957
und dies entspricht dem Wert, den du mit Delphi erhältst.
Michael Gasser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 21:41
Deine Berechnung:
VB Window(3) : 7,673957E-02
Delphi 0,076739571989

7,673957E-02 bedeutet 7,673957 * 10^(-02) = 0,07673957
und dies entspricht dem Wert, den du mit Delphi erhältst.
Warum sind denn dann die Cosinus werte unterschiedlich..

Danke noch für die Info dann scheinen die werte Window(n) identisch zu sein oder nur der eine?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 21:42
Habe jetzt mal nur InitHamming Analysiert..
Daten sind wie folgt.
[...]

Wie man sehen kann weichen die Daten extrem von VB6 ab.
Hä? Die sind quasi identisch. Kommst du vll. gerade mit der exponentiellen Notation durcheinander?
unbenannt.png


Zitat:
Habe mich gefragt warum. Das einzige das in frage kommt ist Cosinus "Cos"

Delphi:
Die ersten 10 einträge von Cos() sind 1
von 11 > 18 ist die Value '0,999'

Nun da darf man sich nicht wundern das nichts funktioniert..
Was ist da wieder im argen.

Habe das Minus 1 wieder aktiviert.
gruss
Ich hoffe, der ist in VB6 auch in rad, ansonsten tippe ich wieder auf ein string/Anzeige-Problem
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Circular spectrum visualizer

  Alt 23. Mär 2019, 21:49
Zitat:
Ich hoffe, der ist in VB6 auch in rad, ansonsten tippe ich wieder auf ein string/Anzeige-Problem
Wie meinst du das?

Zitat:
Hä? Die sind quasi identisch.
Hmm nach deiner Tabelle zu urteilen eigentlich nicht.
Und genau das kann schon der unterschied sein bei der Visuellen Darstellung.

Zitat:
Kommst du vll. gerade mit der exponentiellen Notation durcheinander?
Nö habe von höherer Mathematik keine Ahnung..
Deshalb bin ich froh das hier einige Helfen um von mir überprüfte Datentypen und Ergebnisse zu bestätigen so das ich sicher sein kann das sie stimmen.
Besonders Michael II Daumen Hoch.

Hmmm..bekomme die Rings nicht ans laufen. Aber wird schon irgendwann.

gruss

Geändert von EWeiss (23. Mär 2019 um 22:00 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz