Thema Datum  Von Nutzer Rating
Antwort
14.07.2009 14:09:57 Leon
NotSolved
15.07.2009 13:04:50 Holger
NotSolved
Rot Aw:Aw:Amplitude und Frequenz
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:
Leon
Datum:
15.07.2009 19:06:41
Views:
954
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Amplitude und Frequenz
Hi Holger,

das nenn ich clever und danke für die Mühe allerdings ist mein Level weit unter Deinem.
Wenn ich das richtig verstehe, ist die erste Schleife dafür da, Nullstellen und Amplituden zu sammeln und „irgendwo“ abzulegen. Die Nullstellen werden wohl durch a repräsentiert, wobei mir nicht ganz klar ist warum mit a = -1 gestartet wird. Woher „weiß“ Last_n was eine potentielle Nullstelle ist, wo wurde festgelegt was Last_n ist? Ganz wichtig: Der Minimalabstand soll zwingend vom Benutzer festgelegt werden, ist meine Idee mit der InputBox korrekt?:
Null_min = Application.InputBox("Minimalabstand (Zeilenanzahl) der Nullstellen angeben", Type:=1)
In der zweiten Schleife werden dann die Werte ausgelesen und die Amplituden je Periode summiert? Warum wird für die Bestimmung der Periodenlänge frq1() und frq()benötigt?
Die Tabellenfunktion bildet dann den Mittelwert der in Schleife 2 ermittelten Werte und gibt diesen in der MsgBox aus? Die Standardabweichung mit anzugeben ist eine Spitzenidee.
Was ich zwingend benötige, ist eine Kontrollmöglichkeit der Werte. Darum möchte ich Nullstellen, positive wie negative Amplituden chronologisch in einer extra Tabelle mit den dazugehörigen Argumenten ablegen. Kann ich diese einfach aus der ersten Schleife beziehen und wenn ja wie?

Ich würde mich freuen, nochmal von Dir zu hören. So oder so, Du hast mir unglaublich geholfen.
Danke.

Leon


Holger schrieb am 15.07.2009 13:04:50:

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
15.07.2009 13:04:50 Holger
NotSolved
Rot Aw:Aw:Amplitude und Frequenz
15.07.2009 19:06:41 Leon
NotSolved
16.07.2009 15:30:46 Holger
NotSolved
17.07.2009 12:55:39 Leon
NotSolved