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

Histogramm erstellen

 

boernd
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 06.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2012, 15:06     Titel: Histogramm erstellen
  Antworten mit Zitat      
Hallo,

ich habe einen vektor x der werte von 0 bis 90 enthält (es handelt sich um geschwindigkeiten). ist x=0 bedeutet dies stillstand, der stillstand ist manchmal für 1 sekund und manchmal länger. ich möchte nun die zeit des stillstandes zählen und ein histogramm daraus erstellen.

ich kann die nullen finden, aber haben keinen passenden command zum zählen und ablegen der nullen.

ich habe versucht die nullen zu detektieren und die letzte stelle durch eine andere zahl zu ersetzen, das selbe wollte ich auch mit der ersten zahl machen, doch hier kommt es immer zum fehler. sollte dies funktioneren würde ich die zellen zwischen den von mir erstellten ziffern zählen.

Code:

for ii=1:length(x)    
if x(ii,1)==0
    a(ii,1)=1;
else a(ii,1)=NaN;
    if x((ii-1),1)==0
        a(ii,1)=999
    end
end
end
 


auf den fehlerhaften teil habe ich hier verzichtet, da ich denke dass es eh einfacher geht. ich versuche nun einfach die nullen zu zählen, festzustellen wieviele nullen aufeinander folgen und dann nach klassen zu sortieren.

ich hoffe von euch ein paar ansätze erhalten zu können.

vielen dank schonmal.

boernd
Private Nachricht senden Benutzer-Profile anzeigen


Seer
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 53
Anmeldedatum: 23.04.12
Wohnort: ---
Version: 7.14.0.739
     Beitrag Verfasst am: 23.07.2012, 15:27     Titel:
  Antworten mit Zitat      
Ein erster Ansatz:
Code:
x= [ 1 3 0 5 6 4 0 5 NaN 0]
a = (x==0)


Damit erzeugst du einen Vektor a, der die gleiche Dimension hat wie x und eine 1 enthält wo die Bedingung erfüllt ist. Überall sonst steht eine 0.
(Die Klammern sind nicht nötig sondern nur eine Hilfe zur besseren Übersicht)

Ausgabe:
Code:
x =
     1     3     0     5     6     4     0     5     NaN    0
a =
     0     0     1     0     0     0     1     0     0     1
Private Nachricht senden Benutzer-Profile anzeigen
 
boernd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 06.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2012, 16:30     Titel:
  Antworten mit Zitat      
danke Seer,

wie kann ich nun die anzahl der aufeinanderfolgenden nullen zählen und anschließend in klassen in einer matrix speichern?

Code:

x=[0 0 0 10 10 12 0 0 13 13 13 0 0 0 0 0 0 ];
a==x=0;
c=0;
for ii=1:length(a)
if a(1,ii)==1
c=c+1;
end
end
 


so erhalte ich die anzahl aller nullen. ich möchte aber nach jeder nichtnull eine neue summierung beginnen und diese dann in einer anderen zelle speichern.
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: 25.07.2012, 15:37     Titel:
  Antworten mit Zitat      
Hallo boernd,

Code:
x = [0 0 0 10 10 12 0 0 13 13 13 0 0 0 0 0 0 ];
isZero = [false, (x == 0), false];
startIndex = strfind(isZero, [false, true]);
endIndex  = strfind(isZero, [true, false]);

Mit diesen Indices solltest Du weiter kommen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
boernd
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 06.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.07.2012, 12:52     Titel:
  Antworten mit Zitat      
vielen dank.

ich habe das problem mittlerweile selbst gelöst. es beinhaltet mehrere if schleifen aber es macht was es soll und das auch schnell.

vielen dank an alle
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.