WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Steigende Messwerte und fallende Messwerte erkennen

 

m.l.90
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2015, 16:50     Titel: Steigende Messwerte und fallende Messwerte erkennen
  Antworten mit Zitat      
Hallo an alle Smile,

Ich bin neu hier im Forum und auch ein Anfänger in der Benutzung von Matlab.

Ich habe eine Frage und zwar habe ich Geschwindigkeitsmesswerte in einem Array mit dazugehörigen Messzeiten. Jetzt möchte ich ganz gerne mir aus den ganzen Werten immer nur einen Bestimmten Bereich anschauen und zwar wenn Beschleunigt wird also wenn die Werte steigen um dadurch rauszubekommen wie lange ich von Geschwindigkeit x1 bis Geschwindigkeit x2 gebraucht habe.

Ich habe jetzt schon mehrmals versucht im Internet und auch hier im Forum nach einer Lösung zu suchen, leider bisher erfolglos.

Ich hoffe Ihr könnt mir weiter Helfen, falls es doch ein Thema dazu gibt und ich nur zu doof war es zufinden wäre auch super wenn ihr mir den Thread mitteilen könnt Smile .

Liebe Grüße
Mike
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.07.2015, 16:57     Titel:
  Antworten mit Zitat      
hallo. was hast du denn versucht? die steigung kann man an der differenz benachbarter werte erkennen. diff
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2015, 08:59     Titel:
  Antworten mit Zitat      
also ich habe bisher dafür gesorgt das ich in meiner Matrix nur noch die Werte Zwischen 30 und 50 kmh sind.
Code:
%%   Hier werden die Werte die unter 30 Kmh und über 50 Kmh sind abgeschnitten
m=1;
for i=1:1:lang-2
    if Velocity_Kmh_2g2(i,1)>30 && Velocity_Kmh_2g2(i,1)<50

        Velocity_g2(m,1)=Velocity_Kmh_2g2(i,1);
        time_g2(m,1)=time_2g2(i,1);
        m=m+1;

    end
end

%% Hier werden die Stellen in der Matrix gelöscht die eine Null beinhalten
m=1;
for i=1:1:lang-2
    if Velocity_g2(i,1)~=0
        Velocity_clear_g2(m,1)=Velocity_g2(i,1);
        time_clear_g2(m,1)=time_2g2(i,1);
        m=m+1;
    end
end
 


Danach wollte ich über eine if-Bedingung herausfinden ob die Werte steigen oder fallen.
Code:
if Velocity_g2(i+1,1)>Velocity_g2(i,1) && Velocity_g2(i-1,1)<Velocity_g2(i,1)

Das hat Leider gar nicht funktioniert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.07.2015, 10:14     Titel:
  Antworten mit Zitat      
zum ersten teil deine erste schleife lässt sich viel einfacher durch logisches indizieren darstellen.
Code:
time_g2=time_2g2(Velocity_Kmh_2g2>30 && Velocity_Kmh_2g2<50 );
Velocity_g2=Velocity_Kmh_2g2(elocity_Kmh_2g2>30 && Velocity_Kmh_2g2<50 );  
 

die zweite schleife verstehe ich nicht. wie können da nullen drin sein wenn du nur werte zwischen 30 und 50 drin hast? das macht für mich keinen sinn.

Zitat:
Das hat Leider gar nicht funktioniert.

das ist leider gar keine ausführliche fehlerbeschreibung? was hat nicht funktioniert?
hast du mal über den von mir vorgeschlagenen befehl nachgedacht?
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2015, 10:39     Titel:
  Antworten mit Zitat      
Also ich habe jetzt mal dein Beispiel versucht
Code:
time_g2=time_2g2(Velocity_Kmh_2g2>30 && Velocity_Kmh_2g2<50 );
Velocity_g2=Velocity_Kmh_2g2(elocity_Kmh_2g2>30 && Velocity_Kmh_2g2<50 );  
 

Ich erhalte dann die Fehler Meldung
Zitat:
Operands to the || and && operators must be convertible to logical scalar values.

Ich verstehe jetzt nicht wo der Fehler ist? Sad

Ja du hast recht der zweite Teil macht kein Sinn, stammte noch von einer überlegung davor.

Also ich versuch vielleicht noch mal meine Problemstellung besser zu beschreiben.

ich habe Geschwindigkeitsmesswerte in einem Vektor. Diese stehen alle untereinander im Skalar. Es wurden mehrere Messungen am Stück gemacht.
Meine Werte sinken zunächst unter 20 Kmh und Steigen dann auch über 60 Kmh und wieder runter usw.. Mich interessieren nun aber nur die Werte zwischen 30-50Kmh und auch nur die Steigenden bzw. eigentlich interessieren mich nur die Anfangs und Endwert, da ich die Zeit berechnen will wie lange ich Brauche um auf 50 Kmh zu Beschleunigen.

Zitat:
Zitat:
Das hat Leider gar nicht funktioniert.

das ist leider gar keine ausführliche fehlerbeschreibung? was hat nicht funktioniert?


Ich habe mir die Messwerte angeschaut in "Velocity_g2", diese haben im Bereich 30 Kmh und 50Kmh Schwankungen wodurch die if-Bedingung zu fehlern führt.

Zitat:
hast du mal über den von mir vorgeschlagenen befehl nachgedacht?

Ja habe ich, jedoch weiss ich nicht ob es bei mir so gut funktionieren wird, da meine Werte sich in 0,001 Schritten ändern und halt durch die Schwankungen bei 30Kmh und 50Kmh wieder Fehler auftreten würden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.07.2015, 10:55     Titel:
  Antworten mit Zitat      
Zitat:
Ich verstehe jetzt nicht wo der Fehler ist? Sad
ein undzeichen zu viel. hab ich vom copy paste übernommen.
Zitat:
diese haben im Bereich 30 Kmh und 50Kmh Schwankungen wodurch die if-Bedingung zu fehlern führt.

schwankungen wäre zb eine wichtige information gewesen.
man könnte da zb filtern. oder den gleitenden mittelwert des anstieges berechnen.
Zitat:
eigentlich interessieren mich nur die Anfangs und Endwert, da ich die Zeit berechnen will wie lange ich Brauche um auf 50 Kmh zu Beschleunigen.

dann such doch einfach die 30 und die 50 und die zeit dazwischen. dann hast du doch den den mittleren anstieg in der zeit. sollte auch mit logscher indizierung und diff machbar sein denke ich.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2015, 11:45     Titel:
  Antworten mit Zitat      
Zitat:
ein undzeichen zu viel. hab ich vom copy paste übernommen.

Jetzt funktioniert es super danke schön Smile.
Zitat:

schwankungen wäre zb eine wichtige information gewesen.
man könnte da zb filtern. oder den gleitenden mittelwert des anstieges berechnen.

Das habe ich selbst erst spät gesehen mit den Schwankungen, dachte zuerst es liegt an den kleinen veränderungen das die Fehler auftreten.
Das mit dem gleitenden Mittelwert ist eine gute Idee um die Schwankungen zu beseitigen in den Geschwindigkeitswerten, nur würde ich dann doch meine Zeitwerte zu sehr beeinflussen bzw. könnte ja dann nicht mehr die Zeiten den einzelnen Geschwindigkeiten zuweisen?
Am besten wäre denke ich ein Filter der mir die ausreiser erkennt und rausschmeisst nur weiss ich noch nicht wie ich das Umsetzen kann.
Zitat:
dann such doch einfach die 30 und die 50 und die zeit dazwischen. dann hast du doch den den mittleren anstieg in der zeit. sollte auch mit logscher indizierung und diff machbar sein denke ich.

Das werde ich jetzt mal versuchen.[/quote]
Private Nachricht senden Benutzer-Profile anzeigen
 
m.l.90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 27.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2015, 15:31     Titel:
  Antworten mit Zitat      
Also mitlerweile bin ich ein ganzes Stück weiter. Ich begrenze zunächst meinen Werte Bereich durch logisches indizieren,
Code:
time_g2=time_2g2(Velocity_Kmh_2g2>29.2 & Velocity_Kmh_2g2<50.05 );
Velocity_g2=Velocity_Kmh_2g2(Velocity_Kmh_2g2>29.2 & Velocity_Kmh_2g2<50.05 );

Dann Filter ich das Rauschen in den Steigenden Werten heraus,
Code:
%% Da die Werte Abweichungen/Rauschen aufweisen, wird hier dieses Problem Beseitigt
r=1;
dauer=length(Velocity_Kmh_2g2);
for i=1:1:dauer-2
    if (Velocity_g2(i+1,1)-Velocity_g2(i,1))>0
        Geschwindigkeit(r,1)=Velocity_g2(i,1);
        Time(r,1)=time_g2(i,1);
        r=r+1;
    end
   
end

und zu guter letzt wollte ich nun hierdurch die Anfangs und Endwerte der Beschleunigung bestimmen
Code:
%% Hier sollen die einzelnen Zeiten bestimmt werden die gebraucht wurden um von 30 auf 50 Kmh zu beschleunigen
Grenze=length(Geschwindigkeit);
n=1;
for i=2:1:Grenze-1
    if (Geschwindigkeit(i,1)<30.005 && Geschwindigkeit(i,1)>29.989 && ())|| (Geschwindigkeit(i,1)>50.000 && Geschwindigkeit(i-1,1)<50)
        Velocity_g2_30(n,1)=Geschwindigkeit(i,1);
        time_g2_30(n,1)=Time(i,1);
        n=n+1;
    end
end


Leider gibt es immer noch den Fehler das zuviele Werte erfasst werden da das Fahrzeug eine Zeitlang sich im Bereich von 29 Kmh +- 1 Kmh bewegt.
Nach dem ich mir die Werte angeschaut habe, müsste die Beschleunigung von 30 auf 50 innerhalb von 2 sekunden erfolgen. Wie kann ich das nun nutzen damit ich die falschen Werte rausschmeisse? mein Kopf ist grad einwenig KO Crying or Very sad .. deswegen fällt es mir grad etwas schwer auf eine Lösung zu kommen. Question
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.