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

Zeilen in Bereiche gliedern

 

keinbuck

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2012, 23:00     Titel: Zeilen in Bereiche gliedern
  Antworten mit Zitat      
Hallo zusammen,
ich habe ein Skript geschrieben, das mir Zeilen einer Zeitreihe ausgibt, wenn diese fehlerhaft sind. Da dies viele Zeilen sind, möchte ich Bereiche zusammenfassen, wenn zum Beispiel der Abstand Zweier oder mehrerer Fehler weniger als beispielsweise 5 Zeilen sind. Quasi eine anfangszeile, in welcher der fehlerhafte Bereich beginnt und die Zeile, in welcher der Bereich beendet ist. So kann man auch kontinuierliche Fehler finden.
Hat jemand eine Lösung?
Grüße!


rainer87
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2012, 22:55     Titel:
  Antworten mit Zitat      
ich weiß nicht wie es mit anderen aussieht, aber ich verstehe leider nicht was du genau meinst.
ein beispiel code bzw datensatz und das was du dann genau haben möchtest würde es mir erleichtern dein problem zu verstehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 29.01.2012, 09:59     Titel:
  Antworten mit Zitat      
Hallo

ich vermute du hast die Indizes der fehlehaften Zeilen, also du kannst z.B mit DIFF den Abstand zwischen den Zeilen berechnen
Private Nachricht senden Benutzer-Profile anzeigen
 
Keinbuck

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 09:40     Titel:
  Antworten mit Zitat      
Hallo,

ich versuche mal das genauer zu beschreiben.
Mit DIFF habe ich eine Lösung, sie aber recht umständlich und mit IF und FOR Schleifen funktioniert, da mir ja ein Wert dabei verloren geht.
Hier mal ein beispielhaftes Ergebnis:
Ich habe einen Vektor
Code:
Fehlerzeilen = [1; 2; 3; 10; 11; 12; 20; 30; 32; 35]

Als Ergebnis mit einem Grenzwert, ab dem Bereiche zusammengefasst werden sollen von 5, möchte ich folgende oder ähnliche Ausgabe haben:
Code:
Bereiche = [1 3; 10 12; 20 20; 30 35]


Damit hätte ich meine Fehler von 10 auf 4 Bereiche verkleinert und das kontrollieren wäre deutlich leichter.

Liebe Grüße
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.01.2012, 11:36     Titel:
  Antworten mit Zitat      
Hallo Keinbuck,

Code:
Fehlerzeilen = [1; 2; 3; 10; 11; 12; 20; 30; 32; 35];
n = numel(Fehlerzeilen);
Bereiche = zeros(n, 2);

width = 5;
ind = 1;

Bereiche(ind, 1) = Fehlerzeile(1);
limit = Fehlerzeile(1) + width - 1;

for i = 1:n
  v = Fehlerzeile(i);
  if v <= limit
    a = v;
  else
    Bereiche(ind, 2) = a;
   
    ind = ind + 1;
    Bereiche(ind, 2) = v;
    limit = v + width - 1;
  end
end
Bereiche(ind, 2) = max(a, Fehlerzeile(n));

Bitte ausgoebig testen. Ich habe gerade kein Matlab zur Hand.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 30.01.2012, 12:05     Titel:
  Antworten mit Zitat      
Code:

Fehlerzeilen    = [1; 2; 3; 10; 11; 12; 20; 30; 32; 35; 40; 60; 90]
width              = 5;
d                   = diff([0;Fehlerzeilen])
bereichpos     = cumsum(d>=width)+1
Bereiche = arrayfun(@(x)[min(Fehlerzeilen(bereichpos==x)),max(Fehlerzeilen(bereichpos==x))],unique(bereichpos),'UniformOutput',false)
Bereiche=vertcat(Bereiche{:})
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Keinbuck

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2012, 18:07     Titel:
  Antworten mit Zitat      
Herzlichen Dank!
Das hat mir sehr geholfen!

Gruß Keinbuck
 
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.