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

Subtraktion mit nachfolgendem Wert

 

mrks_94
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 13.06.18
Wohnort: ---
Version: R2018a
     Beitrag Verfasst am: 23.07.2018, 15:27     Titel: Subtraktion mit nachfolgendem Wert
  Antworten mit Zitat      
Hallo Leute,

ich habe eine Wertereiehe, welche über die Zeit steigt und wieder sinkt. Dabei hanelt es sich um die gespeicherte Energie eines Akkus und die findet ihr im Anhang. Hier könnt ihr sie euch ansehen:

Code:

t = (1:525591)';
area (t,Ladezustand(:,2));
 


Nun benötige ich einen Vektor, welcher nur die Werte des Entladevorgangs enthält, also wenn die Kurve sinkt. Mit anderen Worten: Wenn ein Wert kleiner als der vorangegangene Wert ist. Ist diese Bedingung erfüllt, so soll der Wert, welcher einen kleieren Nachfolger hat, mit diesem subtrahiert werden, sodass ich für jeden Zeitschritt des sinktenden Anteils der Kurve eine positve Differenz erhalte. Wie kann ich das realisieren?

Alle anderen steigenden Werte sollen auf 0 gesetzt werden.

Vielen und liebe Grüße!

Ladezustand.mat
 Beschreibung:

Download
 Dateiname:  Ladezustand.mat
 Dateigröße:  1.83 MB
 Heruntergeladen:  205 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2018, 15:46     Titel:
  Antworten mit Zitat      
Hallo,

klingt nach
Code:
-min( diff(Ladezustand),  0)

Falls nicht, bitte für den ersten Teil der Daten die gewünschten Ergebnisse angeben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
mrks_94
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 13.06.18
Wohnort: ---
Version: R2018a
     Beitrag Verfasst am: 25.07.2018, 16:17     Titel:
  Antworten mit Zitat      
Danke für die Antwort.

Ich konnte es mit folgendem Code lösen:

Code:

t = (1:525591)';
E_stor = Ladezustand(:,2);

for n = 1:length(t)-1
    if E_stor(n,:) > E_stor(n+1,:)
        E_out(n) = E_stor(n,:) - E_stor(n+1,:);
    end
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.07.2018, 18:57     Titel:
  Antworten mit Zitat      
Hallo,

und was hat dich davon abgehalten, meinen Vorschlag zu verwenden?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
mrks_94
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 13.06.18
Wohnort: ---
Version: R2018a
     Beitrag Verfasst am: 26.07.2018, 12:39     Titel:
  Antworten mit Zitat      
Prinzipiell nichts. Ich hatte nur die oben stehende Lösung schon gefunden, ehe ich deine Antwort gelesen habe.
Die diff-Funktion kannte ich noch nicht. Damit lässt sich der Code natürlich schlanker halten. Also wieder was gelernt Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.07.2018, 20:29     Titel:
  Antworten mit Zitat      
Hallo,

es ist schon empfehlenswert zu schauen, ob die Frage beantwortet wurde, bevor man selbst nach komplett anderen Lösungen sucht...

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.