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

Array in Schleife "füllen" nur letzter Eintrag ko

 

FelixW
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.10.2021, 09:53     Titel: Array in Schleife "füllen" nur letzter Eintrag ko
  Antworten mit Zitat      
Hallo Zusammen,

jetzt habe ich alle vermeintlich komplizierteren Probleme gelöst und dann treibt mich das hier in den Wahnsinn.
Die Idee: Ich habe datetime Arrays mit 1 -15 Einträgen und muss in Datetime Array mit 8000+ Einträgen die passenden Einträge finde und anschließende auslesen.
Für den trivial Fall, Arrays mit einem Eintrag, funktioniert der Code auch, bei Arrays mit mehreren Einträgen werden aber in der Ausgabe die Positionen 1 bis n-1 mit NaT überschrieben und nur für Position n der korrekte Zeitstempel gespeichert...

Code:
load ('Time_Array') % 8529x1 datetime
load('Test_Grenzen') % 9x1 datetime

Übetragung der Start- und Endzeiten der verschiedenen Speicherbetriebsarten auf die Speichertemperaturen und Plots der Speichertemperaturen innerhalb dieser Grenzen
Der erste Schritt ist notwendig, da die Speichertemperaturen mit einem anderen Intervall herausgeschrieben werden, als die Betriebsarten.

for k=1:length(Grenzen_Test)
    Start = datetime.empty;
    Ende  = datetime.empty;
    for i=1:height(Time_Array)-1
       
        Time_Start = datenum(Grenzen_Test(k));
        Timei = datenum(Time_Array(i));
        Timeiplus1 = datenum(Time_Array(i+1));
       
        A =   (Timei < Time_Start & Timeiplus1 > Time_Start) | Timei == Time_Start;
        if A == 1
            Start(k,:) =  Time_Array(i+1);
        else
        end
    end
end

clearvars -except Betriebsweisen Daten Grenzen_Test Time_Array Start


Der Code ist identisch in der zip angehängt, die ungewünschte Ausgabe wird in Start abgelegt.

Vielen Dank und viele Grüße

Z_Übertragung der Grenzen.zip
 Beschreibung:

Download
 Dateiname:  Z_Übertragung der Grenzen.zip
 Dateigröße:  31.2 KB
 Heruntergeladen:  161 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: 31.10.2021, 10:26     Titel:
  Antworten mit Zitat      
Hallo,

geh doch mal Schritt für Schritt den Code im Debugger durch. Dann siehst du, dass du dir mit der Zeile Start = datetime.empty; in der for-Schleife die vorherigen Ergebnisse überschreibst.

Ich würde so vorgehen:
Code:
idx = zeros(size(Grenzen_Test));
for k = 1:length(Grenzen_Test)
    [~, idx(k)] = min(abs(Grenzen_Test(k)-Time_Array));
end
Start2 = Time_Array(idx)


Damit findest du die nächstgelegenen Zeitpunkte. Mit deinem Code findest du etwas ein wenig anderes. Näher kommt man dem mit
Code:
idx(k) = find(Time_Array >= Grenzen_Test(k), 1, "first");


Was von der Anwendung her sinnvoll ist, kann ich nicht beurteilen. Ich würde jedenfalls nicht in datenum umwandeln. datetimes können genauso verglichen werden.

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.