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

Häufigkeitsverteilung von Uhrzeiten

 

tiergarten

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2012, 04:04     Titel: Häufigkeitsverteilung von Uhrzeiten
  Antworten mit Zitat      
Hallo!

Ich habe einen Vektor P mit verschiedensten Werten und einen dazugehörigen Datumsvektor datevec (Stundenwerte eines knappen Jahres) und würde gerne eine Häufigkeitsverteilung erstellen, zu welcher Uhrzeit P am häufigsten 0 ist. Die länger beider Vektoren ist 8741 und ca. die Hälfte der Werte von P sind 0.

1. Problem: Wie kann ich Datum und Uhrzeit von P(P==0) ausgeben?

2. Problem: datestr(datevec,15) gibt mir die Stunden in der Form 00:00, 01:00 usw. aus, wie kann ich dann eine Häufigkeitsverteilung mit 0 bis 24 in 1er Schritten auf der X-Achse für P=0 erstellen?

Hoffentlich kann mir da jemand weiter helfen, ich finde einfach nichts ...

Vielen Dank,

Grüße,

Klaus


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.01.2012, 17:28     Titel:
  Antworten mit Zitat      
Hallo

zu 2: siehe Fkt DATETICK

zu 1: sei Vektor für Uhrzeit U
Code:

   U(P==0)
 

du kannst aber HISTC verwenden
Private Nachricht senden Benutzer-Profile anzeigen
 
tiergarten

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2012, 20:31     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort!

Leider liegt ganau da das Problem, dass es so nicht funktioniert, die Uhrzeit von (P==0) auszugeben.

Ich habe einen Datum- und Zeitvektor in der Matlab internen Zeitrechnung namens datevec und datevec(P==0) funktioniert leider nicht. Es geht nicht einmal:

datevec(P)

dann kommt nämlich:
??? Subscript indices must either be real positive integers or logicals.

Und selbst wenn das funktionieren würde, wäre ja jeder Stundenwert des Jahres eine andere Zahl oder? Alos müsste ich mit datestr(datevec(P)) die Form 31-Dec-2010 23:00:00 herstellen.

datestr(datevec,15) gibt mir die Stunden und Minuten aus. Also nur in der Form "23:00". Aber auch hier funktioniert leider nicht

datestr(datevec,15(P))

es kommt dann: Error: Unbalanced or unexpected parenthesis or bracket.

Und selbst wenn das funktionieren würde, weiß ich nicht, wie ich die Stunden dann in normale Zahlen zwischen 1 und 24 umwandeln kann um die Häufigkeitsverteilung erstellen zu können.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.01.2012, 10:16     Titel:
  Antworten mit Zitat      
Hallo tiergarten,

Zitat:
Code:

??? Subscript indices must either be real positive integers or logicals.

Das sieht danach aus, als habest Du "datevec" als Variable definiert. Dann ist die Funktion "datevec" nicht mehr erreichbar.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
tiergarten130

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 01:50     Titel:
  Antworten mit Zitat      
Danke Jan!

Da aber zB: datestr(datevec(8741)) das korrekte Datum samt Uhrzeit ausgibt, kanns daran auch nicht liegen oder?
 
Harald
Forum-Meister

Forum-Meister


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

du hast offensichtlich eine Variable "datevec" angelegt. Das ist erst mal nicht schlimm, und du bekommst ja auch ein sinnvolles Resultat.

ABER: dadurch, dass es eine Variable dieses Namens gibt, kannst du die gleichnamige Funktion datevec nicht verwenden, und sie könnte in diesem Fall hilfreich sein.
Code:


Um dieses Problem zu vermeiden, solltest du die Variable einfach umbenennen.

Zudem wäre es hilfreich, wenn du deinen bisherigen Code zur Verfügung stellst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
tiergarten130

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.01.2012, 14:43     Titel:
  Antworten mit Zitat      
Hallo!
Ich habe 2 verschiedene Datensätze, einmal 10-Minuten-Mittelwerte und einmal Stundenwerte. Darum hab ich diese function benutzt, um Daten gleicher Uhrzeit vergleichen zu können:

Code:


function [datevec,ind1,ind2] = commondatevec(date1,date2)
% ---------------------------------------------------------------------
% function for finding common integer date vector of two vectors
%
% INPUT:    date1 ... first integer date vector
%           date2 ... second integer date vector
%
% OUTPUT:   datevec ... common date vector
%           ind1    ... indices of date1 meeting common date
%           ind2    ... indices of date2 meeting common date

% --- make vectors row vectors:

if size(date1,2) ~= 1; date1= date1'; end
if size(date2,2) ~= 1; date2= date2'; end

% --- make vector containing both date vectors and sort them:
[dateall,ind] = sort(cat(1,date1,date2));

% --- find common date vector and indices meeting common date:

datevec = dateall(find(diff(dateall) == 0));
ind1 = ind(find(diff(dateall) == 0));
ind2 = ind(find(diff(dateall) == 0) + 1) - length(date1);
 

So kann ich 2 verschieden Messdaten aus jeweils dem anderen Datensatz vergleichen. Durch zum Beispiel

Code:
P = p(ind1); und U = u(ind2);


erhalte ich p und u von allen Uhrzeiten zu denen beide gleichzeitig gemessen wurden und ich kann weitere Berechnungen durchführen, da die beiden Vektoren dann auch die gleiche Länge haben.

ich habe diese function nicht selbst geschrieben, dazu reichen meine Kenntnisse, wie du bemerkt hast nicht. Liegt das Problem also hier in der 3. letzten Zeile oder? Kann ich dort das "datevec" einfach in einen anderen Namen umbenennen?

Vielen Dank,

für deine Mühe!!

Viele Grüße!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.01.2012, 17:38     Titel:
  Antworten mit Zitat      
Hallo,

schönen Gruß an den Autor des Programms:
1. Vermutlich überflüssige FIND-Befehle
2. diff(dateall) == 0 wird wiederholt verwendet, sollte also nur einmal berechnet werden
3. datevec als Variablenname benutzt
4. Wenn ich das richtig sehe, gibt es genau das schon als Befehl INTERSECT in Standard-MATLAB.

Was du nun machen kannst: du rufst das Programm vermutlich in sehr ähnlicher Form wie die Deklarationslinie auf. Du kannst (und solltest!) die Namen der Ein- und Ausgabeargumente aber anpassen.

Zudem würde ich überprüfen, ob man hier nicht direkt INTERSECT verwenden kann - die Syntax ist sehr ähnlich zu dem von dir verwendeten Befehl.

Schau dann bitte mal, was das für dein ursprüngliches Problem bedeutet, und melde dich ggf. wieder.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 18.01.2012, 17:41     Titel:
  Antworten mit Zitat      
Hallo tiergarten130,

Ja, einfach die Variable mit Namen "datevec" umbenennen, damit die Funktion mit des gleichen Names wieder erreichbar ist.

Gruß, Jan
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.