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

Zeitvektor

 

HubiHH
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2008, 13:33     Titel: Zeitvektor
  Antworten mit Zitat      
Hallo Forumsmitglieder,

ich bin absoluter Anfänger in MatLab und habe folgendes Problem, zu dem ich auch keine Lösungen in Büchern oder im Internet gefunden habe.

Ich habe einen Datums-und Zeitvektor mit Start- und Endzeit entwickelt (mit datenum), der das Datum und jede Viertelstunde über das Jahr 2007 angeben soll (also 1.Zeile 01.01.2007 00:00, 2.Zeile 01.01.2007 00:15:00, etc.) (realisiert über A = Startzeit:1/96:Endzeit). Über datestr kann ich mir z.B. nur die Zeit angeben lassen (Zeit = datestr(A,15).

Nebenbei habe ich einen Vektor B aus Excel eingelesen. Beide Vektoren sind gleich lang.

Wenn nun der Vektor A (oder Vektor Zeit?) in einer Zeile 07:30:00 angibt, dann soll entsprechend in der gleichen Zeile des B Vektors der Wert mit 2 multipliziert werden.

Dies ist leider erst das erste Problem, die weiteren folgen dann bzw. sind eine weitere Detaillierung.

Vielen Dank für Eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 02.10.2008, 14:02     Titel:
  Antworten mit Zitat      
Moin,

probiere mal folgendes:
Code:
idx = strcmp(Zeit,'07:30:00');
B = B(idx).*2;

Ich habe es nicht nochmal probiert, sollte allerdings klappen, denke ich...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HubiHH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2008, 14:35     Titel:
  Antworten mit Zitat      
Moin Alex,

vielen Dank! War gerade ein paar Tage verreist, daher sitze ich nun erst wieder dran. Funktioniert leider nicht, da B anschliessend ein leerer Vektor ist ("Input array is empty"). Also im unteren Code ist B leer.

Nun vielleicht einmal der gesamte Code
Code:


B = xlsread('TOU.xls',1,'C2:C192');

Startzeit = datenum(2007,01,01,0,15,0);
Endzeit = datenum(2007,01,02,23,45,00);

markT = Startzeit:1/96:Endzeit;

Zeit = datestr(markT,15);      
                               
Datum = datestr(markT,2,1913); %brauche ich später
 
idx = strcmp(Zeit,'07:30');

B = B(idx).*2;

xlswrite('TOU.xls',B,'E2:E192');

 


Danke!

Gruss
Hubi
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 07.10.2008, 15:02     Titel:
  Antworten mit Zitat      
Stimmt...

Aber das läuft bei mir:
Code:
B = xlsread('TOU.xls',1,'C2:C192');

Startzeit = datenum(2007,01,01,0,15,0);
Endzeit = datenum(2007,01,02,23,45,00);

markT = Startzeit:1/96:Endzeit;

Zeit = cell(size(markT));
Datum = cell(size(markT));
for k=1:length(markT)
    Zeit{k} = datestr(markT(k),15);      
    Datum{k} = datestr(markT(k),2,1913); %brauche ich später
end
 
idx = strcmp(Zeit,'07:30');

B = B(idx).*2;

xlswrite('TOU.xls',B,'E2:E192');


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HubiHH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2008, 15:56     Titel:
  Antworten mit Zitat      
Super! Läuft auch bei mir, allerdings zeigt er mir dann den Vektor B in Excel nur mit 2 Zeilen, die er in die Zellen E2 und E3 schreibt, an. (Kurzer Hintergrund: B ist eine Zeitreihe über zwei Tage, dementsprechend kommt der String '07:30' auch zwei Mal vor). Allerdings möchte ich in Excel einmal den alten Vektor B in Spalte C und den veränderten in Spalte E, mit den entsprechenden Multiplikationen bei '07:30' angezeigt bekommen, also in der entsprechenden gleichen Zeile.

Grund ist, dass ich noch andere Zeitreihen verändern muss und später alle überlagern möchte, um dann anschliessend monetär zu bewerten. Die original Zeitreihen gehen über 1 Jahre (also rund 35.000 1/4-Werte).

Danke für Deine Hilfe!

Gruss
Hubi
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 07.10.2008, 16:53     Titel:
  Antworten mit Zitat      
Dann ändere diese Zeile:
Code:
B(idx) = B(idx).*2;


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HubiHH
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2008, 17:09     Titel:
  Antworten mit Zitat      
Moin Alex,

hervorragend!! Ich hatte bereits diesen Versuch auch unternommen, da es aber nicht klappte, hatte sich wohl bei mir ein Fehler eingeschlichen. Nun funktionierts, stellt mich aber vor neue Probleme:

1) Statt z.B. nur den Wert in Vektor B bei 07:30 mit 2 zu multiplizieren, sollen alle Werte im Zeitraum von 07:30 bis 09:00 mit 2 multipliziert werden. Anstatt nun jede 1/4 h einzeln anzugeben (also 07:30, 07:45, 08:00, etc. - machbar aber umständlich): Gibt es hier eine elegantere Lösung?

2) Diese Multiplikation in diesem Beispiel mit 2 soll nur an Werktagen im Jahr 2007 erfolgen. Die Wochenenden und Feiertage sollen besonders berücksichtigt werden (also alle Zeitpunkte am Wochenende z.B. mit 0,5 multipliziert werden). Meine Recherchen und Suchen in Büchern und im Internet haben leider bisher nichts ergeben.

Danke für Deine Hilfe!
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.