Nun habe ich folgendes Problem: ich möchte eine geplotte Kurve prozentual runterechnen. Das ganze habe ich mal Fachmännisch im Anhang mit Paint schematisch dargestellt.
Wenn meine Daten nun z.B. wie folgt sind:
1
2
3
4
5
6
5
4
3
2
1
möchte ich sie nach der berechnung mit z.B. 50 % um die Hälfte des Wertes haben
0.5
1
2
3
4
5
4
3
2
1
Wie stelle ich das am geschicktesten an?
Die zweite Frage ist, wie kann ich die blaue Kurve aus dem Anhang mitteln das sie weniger Ausschläge hat?
zum ersten Problem: mir ist nicht klar, wie der zweite aus dem ersten Vektor erzeugt werden soll. Warum ist z.B. der erste Eintrag des neuen Vektors 0.5 und der zweite 1? Warum ist der zweite Vektor einen Eintrag kürzer?
Habe mich in der ersten beschreibung etwas falsch ausgedrückt bzw. einen Denkfehler gemacht. Die Kurve soll von der Steigung und Höhe um die Hälfte reduziert werden, allerdings im selben Punkt Starten.
wenn ich das richtig verstehe, passt es aber nicht zu deinem Beispiel.
In der Beschreibung widersprechen sich zudem "im selben Punkt starten" und "Höhe um 50% reduzieren".
Beim zweiten Teil mit dem Glätten, bin ich mir nich so richtig sicher. Durch das zero-padding an den Rändern liefert der Filter am Rand nichts schönes. Trick: Daten erst (so wie beim ersten Teil) verschieben, dass links der erste y-Wert die Null ist, dann filtern und wieder zurückverschieben. Ob das wirklich "erlaubt" ist, weiß ich aber nicht - viellleicht weiß Harald da ja etwas drüber und klärt uns beide auf
Prinzipiell kannst Du aber einen einfachen moving average Filter benutzen, oder einen Tiefpassfilter, der die hohen Frequenzen (dein Rauschen) rausfiltert, benutzen. Da bin ich mir sicher. Zur Not kannst du dir auch schnell selbst einen Moving Average Filter schreiben, der kein Zeropadding macht, sondern die Fensterbreite am Rand anpasst und über weniger Werte mittelt.
Code:
% moving average filter
windowsize = 5;
plot(x,filter(ones(1,windowsize)/windowsize,1,y-ymin)+ymin,'k')
Meine Kurven habe ich jetzt einfach mit stupider prozentualer multiplikation runtergerechnet X * 0.75 usw.
allerdings bekomme ich das mit dem Filter nicht hin. Meine Daten gehen von 10.8 bis -400.58 , nun weiß ich aber nicht wie ich den Filter so setzte, das ich eine einigermaßen "stabile" Kurve bekomme. Könnt ihr mir dazu was sagen?
Am Vorschlag von Nras bin ich gescheitert, eigentlich muss ich doch nur das y durch meine Daten der y-Achse und das x durch meine Daten der x-Achse ersetzen? Aber es kommt immer die Fehlermeldung:
damit wir dir bei der Fehlermeldung helfen können, müsstest du schon auch den Code posten, den du verwendet hast.
Der Code von Nras läuft ja. Das Problem muss also in einer Änderung liegen, die du gemacht hast.
das ganze hier könnte für alle viel angenehmer und schneller laufen, wenn du auf Bitten und Vorschläge reagierst. Poste doch einfach den Code, den du benutzt inklusive der auftretenden Fehlermeldungen und bestenfalls noch, in welcher Zeile der Fehler bei dir auftritt. Dann kann man das reproduzieren, was die Fehlerrsuche stark vereinfacht.
Eine mögliche Ursache: du hast in dieser folgenden Zeile statt ymin einfach nur min geschrieben:
die Fehlermeldung legt nahe, dass du min ohne Eingabeargumente aufgerufen hast. Nras ruft min aber mit Eingabeargumenten auf.
Anscheinend hat sich bei dir also ein Fehler eingeschlichen. Um dir bei dessen Behebung helfen zu können, müssten wir aber genau wissen, was du gemacht hast - also bitte keine Beschreibung, sondern den Code. Ansonsten wird es schwierig bis unmöglich, dir weiterzuhelfen.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.