Softwareentwickler MATLAB/Simulink (w/m) Erarbeitung von Lösungen im Bereich der Schnittstelle zum Simulink-Modell und der Benutzeroberfläche von TargetLinkdSPACE GmbH - Paderborn
Verfasst am: 03.02.2012, 15:39
Titel: Zeiten aus Vektoren berechnen
Hallo,
mein Problem ist folgendes: Habe 2 Vektoren gegeben. Vektor A enthält Werte, Vektor B enthält zu den Werte die entsprechenden Zeiten. Zusätzlich gegeben ist eine obere Schranke und eine untere Schranke. Geplottet ergeben beide Vektoren eine oszillierende Funktion, welche über die obere und untere Schranke sich hinausbewegt und wieder zurück. Dies geschieht extrem oft. Wie kann ich nun die Gesamtzeit herausbekommen, wie lang die Kurve oberhalb der oberen Schranke war und die Gesamtzeit, die die Kurve unterhalb der unteren Schranke war?
obere Schranke beispielsweise y=2 (B ist die x-Achse). Die Kurve kommt ja in unregelmäßigen Abständen über die Schranken und ich kann nicht einfach die Zeiten addieren.
anaja wenn die obere schranke 2 ist und der abstand immer 0.1 wie ich das sehe und 4 werte über 2 liegen würde ich sagen das 0.4 die antwort ist ^^ in welchem format die zeit allerdings bei dir vorliegt weis ich nicht.
o=3.5 %obere schranke
u=-3.5%untere schranke
dt=0.1 %zeitabstand zwischen den messungen
OT=sum(A>o)*dt
UT=sum(A<u)*dt
Carmen_27
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.02.2012, 16:21
Titel:
Genau ist dies aber nicht. Zwischen den einzelnen Punkten wird doch beim polten interpoliert. Nehmen wir an, ein Wert liegt oberhalb der Schranken und zwei Werte liegen darunter (Dreieck). An der Spitze vom Dreieck liegt der Punkt oberhalb der Schranke. Wie kann ich dann die Zeit berechnen, wo die Kurve oberhalb der Schranke liegt? Man weiss ja nicht genau ob 1*dt ist, da man nicht mehr Werte hat. Wie muss man mit so etwas umgehen?
wenn du willst kannst du dir ja mit interp1 noch werte interpolieren bis es dir genaugenug ist.100% genau bekommst es ja nie hin weil dein signal nicht kontinuirlich ist man hat ja immer ne abtastrate. manche zeitabschnitte bewertest du zu groß und manche zu klein. wie genau die methode ist is dann en sache der fehlerabschätzung. mit anderen worten. du kennst die werte zwischen deinen messungen nicht. von daher kannst du auch nicht urteilen ob die methode genau ist oder sehr ungenau. aber ich denke bei genügend messwerten wird schon ein halbwegs genaues ergebniss rauskommen.
Carmen_27
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.02.2012, 16:53
Titel:
Da hast Du recht! Wie füge ich "interp1" in obigen Code ein?
x und y hast du schon. jetzt musst du dir nur noch ein xx generieren also eine vektor mit ner höheren zeitauflösung und dann bekommst yy raus.
bei den beispielen get das recht gut hervor. und dann wärtest du halt dein interpoliertes datenmaterial aus und benutzt da als multiplikator halt den neuen zeitunterschied
Carmen_27
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.02.2012, 17:39
Titel:
Vielen Dank!
Options and Permissions
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.