Alo ich hab schon mal ein Teilerfolgserlebnis: Ich habe es fast geschafft die Amplitude einer Schwingung an einem beliebigen Ort x zu bestimmen.
Folgendes hab ich dabei gemacht bzw. entdeckt:
Und zwar wird bei der FFT nach Betrag und Phase doch die richtige Amplitude ausgegeben, nur dass man diesen Wert noch mit Wurzel aus 2 multiplizieren muss, aber das ist ja eigentlich nichts Neues. So habe ich also für jede im Eingangsignal enthaltene Frequenz die entsprechende Amplitude. Diese hab ich dann den Frequenzen zugeordnet, indem ich die Anzahl der Samples in ein Array geschrieben habe und über das Zusammenführen mit den Amplituden, habe ich nun für jede Frequenz die entsprechende Amplitude.
D.h. ich habe nun die Frequenz und die maximale Amplitude jeder im Eingangssignal enthaltenden Schwingung und über die Beziehung
(Ort x / Wellenlänge) * maximale Amplitude = Amplitude am Ort x!
Dachte ich zumindest gestern.
Heute bin ich wieder ein bisschen schlauer und habe herausgefunden, dass obige Gleichung nur für die erste Vollschwinung gilt, also muss der Ort x innerhalb von der Wellenlänge der Schwingung liegen. Aber das ist ja nicht Sinn der Sache, weil erstens der Ort x auch weiter weg liegen können soll und zweitens ich viele Frequenzen habe. Also habe ich mir folgendes überlegt:
Wenn mein Ort x nun bei z.B. 24.76 Vollschwingungen einer bestimmten Wellenlänge liegt, interessiert mich ja eigentlich nur die Amplitude bei dem 0.76fachen Wellenlänge. Daraus folgt, dass ich eine Schleife brauche die prüft, ob der Ort x nun mehr als 1 Vollschwingung entfernt liegt und wenn ja von dem Wert 1 abzieht. Des Weiteren ist mir aufgefallen, dass die Amplitude gar nicht negativ wird, obwohl das wichtig ist, da bei einer Überlagerung eines Schwingungsmaximums und eines Schwinungsminimums gleicher Amplitude adiieren diese sich zu NULL auf (ich weiß gilt nur bei gleicher Frequenz, aber ich hoffe es ist klar was ich meine). So habe ich gleichzeit noch eine weitere Funktion eingebaut, die testet, ob der Ort x nun über dem 0,5 fachen der Wellenlänge liegt, oder nicht und wenn dem so ist soll der Wert negiert werden.
Dies klappt auch wunderbar für eine Frequenz, aber für mein Array aus Frequenzen und zugehörigen Amplituden klappt das nicht. Da ich die Überprüfung, ob der Ort x > 1 an eine Casestruktur gehangen habe, wird mir der Fehler genannt, dass meine Datenquelle ein Array aus Bool´schen Werten ist und meine Datensenke nur True oder False.
Also mein Problem momentan ist, dass ich für jede Frequenz und deren max. Amplitude prüfen möchte, ob der Ort x innerhalb einer Wellenlänge ist und wenn dies dann so ist (durch Abziehen von 1 bis der Wert < 1), ob der Wert größer 0,5 ist oder nicht.
Wie kann ich das verwirklichen?
Hier ist mal ein Bild: Die Version mit der ich arbeite ist die 2009er
http://www.labviewforum.de/style_images/1/.../attach_add.png
P.S. in dem Bild fehlt die trigonometrische Ergänzung, sodass man wirklich auf die Amplitude kommt. Also es müssen noch die Beträge gebildet werden usw.