Verfasst am: 06.08.2013, 16:15
Titel: Zeitverlaufe mit Start nach aktueller Uhrzeit
Hallo Community,
ich stehe gerade vor folgendem Problem.
Ich möchte in meiner Simulation auf einen Tagesverlauf von Messdaten zugreifen. Die Messdaten sind z.B. mit einen Zeitvektor von 0:86400 sec (=1Tag) und einem dazugehörigem Signalvektor aufgebaut.
Die Daten kann ich theo. mit dem "From Workspace"Block in meine Simulation reinbringen, dass ist mir soweit klar. Allerdings habe ich an meiner Simulation ein Gerät hängen, welchem ich die Daten übergebe. Dieses Gerät hat eine interne Uhr und macht zu bestimmten Uhrzeiten bestimmte Sachen.
Deswegen, wenn ich meine Simulation um 16:00 Uhr starte, will ich nicht das mein Tagesverlauf um 00:00 anfängt sonder um 16:00 Uhr.
Dieser soll dann auch nicht um 24:00 Uhr (=86400s) stoppen sondern dann wieder bei Sekunde 0 wieder anfangen.
Hier nochmal mit Beispiel
Time=[1, 2, 3, 4]
Signal=[2, 4, 6, 8]
Ich will nun dass die Simulation mit Time=3 beginnt und bis Time=2 einen Zirkel macht, die Ausgabe sähe dann so aus
Time_out=[3,4,1,2]
Signal_out=[6,8,2,4]
Die Messdaten zu ändern wie z.B. nimm Signalvektor zu bestimmten Uhrzeit (z.B. 16:00) und setze den Wert auf Zeitvektor(1) und interpolier mal durch, macht hier kein Sinn, da ich die Simulation evtl auch um 16:01 starte.
Wäre cool wenn mir jemand in dem Problem-WirrWarr meine Gedanken ordnen könnte, habe gerade Kopfschmerzen
Beim rumhirnen habe ich jetzt doch die Messdaten verändert. So würde es zwar schon gehen, aber vielleicht gibt es noch bessere/andere Möglichkeiten, da es schöner wäre wenn das in der Simulation geschieht und nicht vorab bei der Initialisierung rein muss.
Wäre für jede Idee dankbar.
Für die wos interessiert hier der Code. Dabei sind LastPwr und P_pv_norm Messdatenvektoren mit zwei Spalten (1.Spalte Zeit in Sec./2.Spalte Wert)
Code:
% dbstop if error
% Abfrage ob Profilverlauf geändert werden soll
zeitverlauf = questdlg('Profilverläufe zu bestimmter Zeit starten?', 'Startpunkt Profil', 'Ja','Nein','Nein');
switch zeitverlauf
case{'Ja'}
%Abfrage was der neue Startwert (Uhrzeit) sein soll
start_uhr=str2double(cell2mat(inputdlg(sprintf('Bitte die gewünschte Startzeit angeben? \n in 15min und auf 100 basierend'),'Wähle Startpunkt')))*3600;
t=LastPwr(:,1); %Hilfswariable
s=LastPwr(:,2);
hilf_uhr=find(t==start_uhr); %Finde Startwert in Zeitvektor
n=s(hilf_uhr:length(s)); %Generieren des neuen Signalvektors
n(length(s)-hilf_uhr+1:length(s))=s(1:hilf_uhr);
LastPwr1(:,1)=LastPwr(:,1); %Erzeuge neuen Profilvektor
LastPwr1(:,2)=n;
clear t;clear s; clear n; clear hilf_uhr
%alles nochmal mit zweiten Messdaten
t=P_pv_norm(:,1);
s=P_pv_norm(:,2);
hilf_uhr=find(t==start_uhr);
Danke für die Verbesserung, aber da die Initialisierung meines Systems bis zum wirklichen starten bis zu 10min dauert, ist es geschickter, wenn ich den Startpunkt selber wähle und dann zur richtigen Zeit auf Simulation starten klicke.
Unschön, ich weiß, aber vielleicht hat jemand noch eine bessere Idee?
Danke
Einstellungen und Berechtigungen
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.