AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Circular spectrum visualizer

Circular spectrum visualizer

Ein Thema von EWeiss · begonnen am 22. Mär 2019 · letzter Beitrag vom 23. Jun 2019
Antwort Antwort
Seite 1 von 10  1 23     Letzte » 
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 04:46 Uhr)
 
TiGü

 
Delphi 10.2 Tokyo Enterprise
 
#2
  Alt 22. Mär 2019, 22:19
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.
  Mit Zitat antworten Zitat
EWeiss
 
#3
  Alt 22. Mär 2019, 22:29
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

Geändert von EWeiss (22. Mär 2019 um 22:39 Uhr)
  Mit Zitat antworten Zitat
Michael II

 
Delphi 10.3 Rio
 
#4
  Alt 23. Mär 2019, 00:41
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 Gasser
  Mit Zitat antworten Zitat
Michael II

 
Delphi 10.3 Rio
 
#5
  Alt 23. Mär 2019, 00:58
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.
Michael Gasser
  Mit Zitat antworten Zitat
EWeiss
 
#6
  Alt 23. Mär 2019, 11:38
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

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

 
Delphi 7 Professional
 
#7
  Alt 23. Mär 2019, 12:01
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;
  Mit Zitat antworten Zitat
EWeiss
 
#8
  Alt 23. Mär 2019, 12:03
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

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

 
Delphi 7 Professional
 
#9
  Alt 23. Mär 2019, 12:26
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?

Log(einwert) oder 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.
  Mit Zitat antworten Zitat
EWeiss
 
#10
  Alt 23. Mär 2019, 12:52
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

Geändert von EWeiss (11. Jul 2019 um 15:56 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 10  1 23     Letzte » 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf