Thema Datum  Von Nutzer Rating
Antwort
14.07.2009 14:09:57 Leon
NotSolved
Blau Aw:Amplitude und Frequenz
15.07.2009 13:04:50 Holger
NotSolved
15.07.2009 19:06:41 Leon
NotSolved
16.07.2009 15:30:46 Holger
NotSolved
17.07.2009 12:55:39 Leon
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
15.07.2009 13:04:50
Views:
1015
Rating: Antwort:
  Ja
Thema:
Aw:Amplitude und Frequenz
Hallo Leon,
ich gehe davon aus, dass du die Argumente und Werte in verschiedenen Spalten hast, wobei zusammengehörende Argumente und Werte in einer Zeile stehen. Da deine Werte leicht schwanken, kann es vorkommen, das sie um eine Nullstelle schwanken. Ich habe deshalb eine Schranke für Mindestabstände von Nullstellen eingesetzt, um solche Ereignisse herauszufiltern. Für die Amplitude berechne ich Mittelwert und Standardabweichung der Differenzen aufeinander folgender Extrema, für die Periodenlänge entsprechend mit den doppelten Differenzen der Argumente aufeinander folgender Nullstellen und Extrema.

Sub Amplitude_Periodenlänge()
a = -1
ReDim n(0), ex(1, 0)
Sp1 = 1 'Spalte mit den Argumenten (Zeitpunkten???)
Sp2 = 2 'Spalte mit den Sinus-Werten
Null_min = 3 'Minimalabstand der Zeilen für Nullstellen
For i = 2 To Cells(Rows.Count, Sp2).End(xlUp).Row
If (Sgn(Cells(i - 1, Sp2)) <> Sgn(Cells(i, Sp2))) Or (Cells(i - 1, Sp2) = 0) Then 'potenzielle Nullstelle
If i - Last_n > Null_min Then 'verhindert Auswertung von Schwankungen um 0
a = a + 1
ReDim Preserve n(a), ex(1, a)
n(a) = Cells(i - 1, Sp1) 'Argument der Nullstelle
ex(0, a) = X 'Argument des Extremums
ex(1, a) = m 'Wert des Extremums
m = 0 'Ausgangswert Max/Min
Last_n = i
End If
End If
If Cells(i, Sp2) > 0 Then 'Maximum suchen
If Cells(i, Sp2) > m Then m = Cells(i, Sp2): X = Cells(i, Sp1)
Else 'Minimum suchen
If Cells(i, Sp2) < m Then m = Cells(i, Sp2): X = Cells(i, Sp1)
End If
Next i
ReDim amp(a), frq(a), frq1(a)
For i = 0 To a - 1
amp(i) = Abs(ex(1, i) - ex(1, i + 1))
frq1(i) = 2*Abs(ex(0, i) - ex(0, i + 1))
frq(i) = 2*Abs(n(i) - n(i + 1))
Next i
With WorksheetFunction
MsgBox ("Amplitude: " + CStr(.Average(amp())) + " ± " + CStr(.StDevP(amp())) + vbCrLf + _
"Periodenlänge: " + CStr(.Average(frq(), frq1())) + " ± " + CStr(.StDevP(frq(), frq1())))
End With
End Sub

Gruß
Holger

Leon schrieb am 14.07.2009 14:09:57:

Hi,

ich bin auf der Suche nach einem Makro, mit dem ich aus einer sinusförmigen Funktion die Amplituden und die Frequenz auslesen kann. Ich bin hier im Forum auch schon fündig geworden (Beitrag vom 17.06.2009).
Wenn ich das richtig verstehe, werden dort mit der Sgn-Funktion lokale Maxima/Minima bestimmt. Da ich mit realen Messwerten arbeite, entspricht das nicht ganz meinen Anforderungen, da diese um den idealen Verlauf schwanken und ich somit permanent lokale Extrema produziere.
Beim Versuch das Problem mit Applikation.WorksheetFunktion.Max/Min zu lösen, erhalte ich immer nur ein Maximum je Messreihe. Ich benötige aber das Maximum/Minimum je halbe Periode.

Ich sehe 3 Möglichkeiten das Problem zu lösen:
1.Eine Funktion die Amplitude/Frequenz aus Sinusfunktionen extrahieren kann (ist mir in Excel nicht bekannt)
2.Bestimmung des globalen Maximums/Minimums zwischen 2 Nullstellen.
3.Vergrößerung der Umgebung um den Wert

Leider habe ich keine Ahnung wie, ihr vielleicht?

Danke

Leon

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
14.07.2009 14:09:57 Leon
NotSolved
Blau Aw:Amplitude und Frequenz
15.07.2009 13:04:50 Holger
NotSolved
15.07.2009 19:06:41 Leon
NotSolved
16.07.2009 15:30:46 Holger
NotSolved
17.07.2009 12:55:39 Leon
NotSolved