• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


RTA
#21
Zitat:Original geschrieben von woody
zum thema fft: das eigentlich verlangsamende dürften die sin/cos-berechnungen sein. Lookuptables könnten da schon etwas bringen. Andererseits schaffe ich es mit einem eher lahmen intel i3 bei 128k und insges. 4 ffts im 'signalweg' gerade mal auf 50% cpu-last.

Ich hab' hier nen Core2 Duo, der ist bei 16K schon dicht. (50% Last = 1 Kern am Anschlag)
 
#22
Zitat:Original geschrieben von Rumgucker

Zitat:Original geschrieben von woody
wir setzen nur um, was hier mathematisch kompakt zusammengefasst ist.

Das hab ich befürchtet überrascht

"Diese Seite wurde gelöscht"

Also doch ein sinnloses Projekt lachend klappe *duck und weg*

du weißt doch, ich bin mit dem handy unterwegs, da ist auch die sache mit den links etwas schwieriger. Ich korrigiers später.


Zitat:Original geschrieben von Hans Dorn

"Flat top window" ist nicht gleich "flat window" Wink

[Bild: Window_function_%28flat_top%29.png]

Diese Fensterfunktion wird bei Ordnungsanalysen eingesetzt, und verhindert ein Auf und ab der Amplitude, wenn die beobachtete Frequenz durch die einzelnen bins marschiert und diese mal mehr, mal weniger gut trifft.
Gruß

das klingt gut!

Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#23
Zitat:Original geschrieben von Hans Dorn

Ich hab' hier nen Core2 Duo, der ist bei 16K schon dicht. (50% Last = 1 Kern am Anschlag)

das ist heftig... Was ist das für ein c2d? Ein E8400 macht das noch unangestrengter wie der schon erwähnte i3.
Die anzeige über bitmaps könnte auch noch so ein übeltäter sein.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#24
Hab hier 'nen E6750...
 
#25
wird es besser, wenn du mal den timer, der die datenverarbeiung triggert, verlangsamst?
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#26
Wäre es vielleicht eine Idee zumindest die Berechnungen auszulagern (DLL) und in C zu implementieren?
 
#27
Man müsste erstmal checken, wo die Hauptzeit verbraucht wird.
 
#28
Zitat:Original geschrieben von e83cc

Wäre es vielleicht eine Idee zumindest die Berechnungen auszulagern (DLL) und in C zu implementieren?

um dann mit PInvoke arbeiten zu müssen? Das was Hans beschreibt ist imho kein Problem, das von .net kommt...

@Gucki, 3eepoint: der Link stimmt nun
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#29
Zitat:Original geschrieben von woody
@Gucki, 3eepoint: der Link stimmt nun

Du bist ja ein ganz Linker.... misstrau
 
#30
Zitat:Original geschrieben von woody

um dann mit PInvoke arbeiten zu müssen?

Bitte, was ist das denn "PInvoke" misstrau
 
#31
eine der ganz wenigen Möglichkeiten um "normale" DLLs mit managed code zu verwenden. Leider...

siehe: http://www.codeplanet.eu/tutorials/cshar...lagen.html
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#32
Zitat:Original geschrieben von Hans Dorn

Zitat:Original geschrieben von woody
zum thema fft: das eigentlich verlangsamende dürften die sin/cos-berechnungen sein. Lookuptables könnten da schon etwas bringen. Andererseits schaffe ich es mit einem eher lahmen intel i3 bei 128k und insges. 4 ffts im 'signalweg' gerade mal auf 50% cpu-last.

Ich hab' hier nen Core2 Duo, der ist bei 16K schon dicht. (50% Last = 1 Kern am Anschlag)


hier der Beweis (i3-M370):

[Bild: 1_1370702906_scr2.png]

ich finde das vom Leistungsaufwand her eigentlich schon ganz brauchbar...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#33
viel schlimmer als die ffts scheint mir im Übrigen der Rauschgenerator zu sein - der sorgt bei mir für 25% CPU-Last!!!

edit:

also das:

Private rnd As New System.Random

Private Sub pinkNoise_gen()
Dim i As Int32
Dim b0, b1, b2, white, tmp As Double

For i = 0 To 131071
white = 100 * rnd.Next(-10, 10)
b0 = 0.99765 * b0 + white * 0.099046
b1 = 0.963 * b1 + white * 0.2965164
b2 = 0.57 * b2 + white * 1.0526913
tmp = b0 + b1 + b2 + white * 0.1848

pinkNoise(2 * i) = CShort(tmp) 'lch
pinkNoise((2 * i) + 1) = CShort(tmp) 'rch
Next
End Sub
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#34
...also ich bin ja nicht so der soft-guru ....aber ein paar messprogramme hab ich schon gemacht Tongue
- die daten werden entweder aus einer datei gnommen...oder nach programmstart in ein ram-array berechnet....das dann zyklisch abgespielt wird

....eigentlich wollte ich eh ein neues mess-programm machen....aber die zeit ... Rolleyes

---wenns interessiert, kann ich ja mal beschreiben, wie ich mir das vorstelle Wink
    Don't worry about getting older.  You're still gonna do dump stuff...only slower
 
#35
Zitat:Original geschrieben von alfsch

oder nach programmstart in ein ram-array berechnet....das dann zyklisch abgespielt wird

so mache ich das mit Sinus und Rechteck (wird berechnet, in Datei geschrieben und imm wieder ausgegeben - nutze dazu SoundPlayer ).

Aber beim Rauschen bekomme ich ja auf diese Art eine nicht zum Dirac "verschwindende" AKF. Daher lasse ich immer neue Werte erzeugen und via circular buffer (DirectSound) ausgeben...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#36
Zitat:Original geschrieben von woody

Aber beim Rauschen bekomme ich ja auf diese Art eine nicht zum Dirac "verschwindende" AKF. Daher lasse ich immer neue Werte erzeugen und via circular buffer (DirectSound) ausgeben...

oder man macht die Rauschdaten entsprechend lang, dann kann man das vernachlässigen...

Wie die Mobilfunker: die machen die Zeiten kurz und behaupten ihr Kanal wäre LTI Wink
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#37
Versuch mal das hier:

Code:
Private Sub output()
        Dim pl, wr As Int32
        Do While True
            buffer.GetCurrentPosition(pl, wr)

            If (buffer.PlayPosition > 200000) And buf_m1 Then
                buf_m1 = False
                pinkNoise_gen()
                buffer.Write(262143, pinkNoise, LockFlag.FromWriteCursor)
            ElseIf (buffer.PlayPosition > 400000) And buf_m2 Then
                buf_m2 = False
                pinkNoise_gen()
                buffer.Write(0, pinkNoise, LockFlag.FromWriteCursor)
            ElseIf buffer.PlayPosition > 500000 Then
                buffer.SetCurrentPosition(0)
                buf_m1 = True
                buf_m2 = True
            End If

            [red]System.Threading.Thread.Sleep(10)[/red]
        Loop

    End Sub

Du wartest in einer Endlosschleife darauf, daß Platz im Buffer frei wird, ohne Rechenzeit ans System zurückzugeben. Wink

Gruß

P.S: Das "code"-Tag schmeißt leider die Tabs weg...
 
#38
naja aber er rechnet ja auch nix...
ich versuchs mal.

Big Grin Wink
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
#39
[Bild: 0001.png]
 
#40
überfall?
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.