Delphi-PRAXiS
Seite 1 von 10  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Circular spectrum visualizer (https://www.delphipraxis.net/200135-circular-spectrum-visualizer.html)

EWeiss 22. Mär 2019 21:28


Circular spectrum visualizer
 
Projekt entfernt..

TiGü 22. Mär 2019 22:19

AW: Circular FFT visualizer die 2
 
Warum nennst du es nicht wie im Original einen "Circular spectrum visualizer"?
Die Fast Fourier Transformation ist doch nur die Methode, um das Spektrum zu erhalten.

EWeiss 22. Mär 2019 22:29

AW: Circular FFT visualizer die 2
 
Zitat:

Zitat von TiGü (Beitrag 1428454)
Warum nennst du es nicht wie im Original einen "Circular spectrum visualizer"?
Die Fast Fourier Transformation ist doch nur die Methode, um das Spektrum zu erhalten.

geändert..

Die meisten Leute stellen nur ein VU bzw.. Osci zur Verfügung von daher dachte ich das es erwähnenswert ist.

gruss

Michael II 23. Mär 2019 00:41

AW: Circular spectrum visualizer
 
Log() in Visual Basic und ln() in Delphi liefern die genau gleichen Werte.

y = ln(x) ist die Umkehrfunktion zu y = e^x.

Wenn du die Umkehrfunktion von zum Beispiel y = 10^x benötigst, dann rechnest du y = ln(x)/ln(10) [in Texten wird oft lg(x) geschrieben]; ähnlich: die Umkehrfunktion von y = 2^x lautet y = ln(x)/ln(2) [oft auch als lb(x) geschrieben].


sqrt(x) in Visual Basic und sqrt(x) in Delphi liefern die gleichen Werte.
y=sqrt(x) ist die Umkehrfunktion zu y = x^2.

sqrt wird zum Beispiel oft verwendet um die Länge eines Vektors zu berechnen. Zum Beispiel v=(3,4) => Länge von v ¦v¦ = sqrt(3*3+4*4) = 5.

sqr(x) liefert in Delphi das Quadrat von x also x^2. Beispiel sqr(4)=4*4=16

Michael II 23. Mär 2019 00:58

AW: Circular spectrum visualizer
 
Ich habe rasch in deinen uSpectrum Code geschaut

Du verwendest dort an zwei Orten sqr(), wo wohl eher sqrt() stehen sollte.
Du hast an beiden Stellen im Code einen Vektor (SpectrumRealteil,SpectrumImaginärteil) und willst sicher die Länge dieses Vektors bestimmen.

EWeiss 23. Mär 2019 11:38

AW: Circular spectrum visualizer
 
Zitat:

Zitat von Michael II (Beitrag 1428459)
Ich habe rasch in deinen uSpectrum Code geschaut
Du hast an beiden Stellen im Code einen Vektor (SpectrumRealteil,SpectrumImaginärteil) und willst sicher die Länge dieses Vektors bestimmen.

Sorry ich bin kein Mathematiker von daher bestimme ich selbst nichts.
Möchte mich auch nicht mit fremden Federn schmücken von daher ist der Ursprungsauthor genannt und ein Link zur Original Quelle verlinkt.

Aber!
Wenn so wie du sagst in VB6 die gleichen werte geliefert werden wie in Delphi.. Warum ist das Ergebnis ein anderes.
Mir ging es darum ein neues Beispiel für meine Library zu erstellen und da bot sich seine Visualisierung dafür an.
Habe mir aber nicht gedacht das es so schwierig wird das nach Delphi umzusetzen.

Rein Mathematisch bin ich ein NOB wenn es um höhere Mathematik geht.
Zitat:

wo wohl eher sqrt() stehen sollte.
Wohl eher sollte hier wie im Original Quelltext sqr stehen deshalb sagte ich ja schon es werden nicht die gleichen werte geliefert.
Das selbe wie bei Log.. das gibt es unter Delphi nicht und liefert komplett unter schiedlichewerte als der Ersatz dafür wenn richtig LN

Zitat:

sqrt(x) in Visual Basic und sqrt(x) in Delphi liefern die gleichen Werte.
sqr VB6 und sqr in Delphi? Wunder warum bei mir nicht.

Deshalb habe ich es in Delphi mit sqrt ersetzt.

gruss

Delphi.Narium 23. Mär 2019 12:01

AW: Circular spectrum visualizer
 
Zitat:

Zitat von EWeiss (Beitrag 1428470)
Das selbe wie bei Log.. das gibt es unter Delphi nicht und liefert komplett unter schiedlichewerte als der Ersatz dafür wenn richtig LN

Bin mir nicht ganz sicher, aber das Log aus VB müsste in Delphi diesemhier entsprechen:
Delphi-Quellcode:
function Log(x: Real): Real;
begin
  result := ln(x) / ln(10);
end;

EWeiss 23. Mär 2019 12:03

AW: Circular spectrum visualizer
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1428472)
Zitat:

Zitat von EWeiss (Beitrag 1428470)
Das selbe wie bei Log.. das gibt es unter Delphi nicht und liefert komplett unter schiedlichewerte als der Ersatz dafür wenn richtig LN

Bin mir nicht ganz sicher, aber das Log aus VB müsste in Delphi diesemhier entsprechen:
Delphi-Quellcode:
function Log(x: Real): Real;
begin
  result := ln(x) / ln(10);
end;

Danke!

Kann ich gerne mal versuchen.
Warum gibt es diese Funktion in Delphi nicht?

Hmmm.. noch um einiges schlimmer als nur LN. Danach tut sich gar nichts mehr

Wenn jemand mitwirken möchte!
Ich benötige 100% kompatible DatenType wenn die Visualisierung so aussehen soll wie im Original.
Nur wie soll das gehen wenn dort LONG und bei mir DWORD verwendet werden muss.

Wäre nett wenn mir jemand zum testen einen gleichlaufenden Sinus Generator Ton hochladen könnte (mp3? ) so im 200Hz spectrum ohne irgendwelche Schwingungen.

gruss

Delphi.Narium 23. Mär 2019 12:26

AW: Circular spectrum visualizer
 
Hab' nochmal etwas gesucht:

Log in VB
Zitat:

Returns the natural (base e) logarithm of a specified number or the logarithm of a specified number in a specified base.
Das ist eine überladen Funktion, die mit unterschiedlichen Parametern aufgerufen werden kann.

Wie sieht der Aufruf in Deinem VB-Quelltext aus?

Delphi-Quellcode:
Log(einwert)
oder
Delphi-Quellcode:
log(einwert,10)
oder irgendetwas in dieser Art?

Wenn in VB Log mit zwei Parametern aufgerufen wird, dann könnte das in Delphi so aussehen:
Delphi-Quellcode:
function Log(x, b: Real): Real;
begin
  Result := ln(x) / ln(b);
end;
Wenn der Aufruf mit nur einem Parameter erfolgt, müsste eigentlich das Log aus VB dem Ln aus Delphi entsprechen und damit zum gleichen Ergebnis kommen.

EWeiss 23. Mär 2019 12:52

AW: Circular spectrum visualizer
 
Danke..
Habe jetzt einen gleichbleibenden Sinuston sinus250hz-10db leider mit leichter Schwingung.


Delphi.
Delphi-Quellcode:
b := (Log(Sqr(Spectrum[i1].r * Spectrum[i1].r + (Spectrum[i1].i * Spectrum[i1].i))
  + 0.0001) + 9.21034037197618) * q1;
VB6
Code:
b = (Log(Sqr(Spectrum(i1).r * Spectrum(i1).r + Spectrum(i1).i * Spectrum(i1).i) _
  + 0.0001) + 9.21034037197618) * q1
q1 ist immer gleich = 25

Log.. wie von dir vorgeschlagen.
Delphi-Quellcode:
function TSpectrum.Log(x: Real): Real;
begin

  result := ln(x) / ln(10);
end;
VB6
Code:
Public Type Complex
    r As Single
    i As Single
End Type

Dim Spectrum() As Complex
Delphi
Delphi-Quellcode:
  TComplex = Record
    r: Single;
    i: Single;
  end;

Spectrum: array of TComplex;
Unterschied siehe Anhang. (Was aber nicht bedeutet das die Berechnung für Log falsch ist)
Doch sie ist falsch.
Schon hart das wenn nichts gespielt wird der Ausschlag des Spektrum bei deiner Berechnung gleich Volllast ist.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
Seite 1 von 10  1 23     Letzte »    

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