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

Spaltensortieren wenn Name alphanumerisch vorliegt

 

Subotai
Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 18.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2013, 19:07     Titel: Spaltensortieren wenn Name alphanumerisch vorliegt
  Antworten mit Zitat      
Hallo,

ich versuche Spalten nach dem Datum zu sortieren.
Das Problem ist, dass der Spaltenname so vorliegt:
NameDatum (Name11_01_2013 ). Der Name ist pro Arbeitsblatt immer der selbe, nur das Datum ist dynamisch und hat pro File nicht immer die selbe Start und Endzeit.
Ich bekomme den Fehler:
The input to DATENUM was not an array of strings
ich vermute dies liegt an meiner Art str einzulesen

Code:
for i=2:6
    str=raw(1,i:i)
expression = ['(?<day>\d+)_(?<month>\d+)_(?<year>\d+)'];
nums = regexp(str, expression, 'match')
nums=datenum(nums, 'dd_mm_yyyy')
num=datestr(nums)
xd = datenum(num(i), 'dd-mm-yyyy');
xd = sort(xd);
xd = datestr(xd, 'dd.mm.yyyy');
err=['name',xd(i,:)]
end
 


Wenn man auf die For Schleife verzichtet und str ersetzt mit
Code:
   str = 'Name11_01_2013  Name22_01_2013 Name02_01_2013 Name31_01_2013  Name01_01_2013  Name01_01_2013 ';
 

dann läuft es durch.
Kann dies überhaupt korrekt sortieren? Wird mir somit nicht nur die 1.Zeile sortiert, sondern auch die daran hängenden folgenden Zeilen für jede Spalte?
Viele Grüße
Subotai
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.08.2013, 19:26     Titel:
  Antworten mit Zitat      
Zitat:
Code:
str=raw(1,i:i)
i:i macht irgendwie keinen sinn.
warum machst du nicht irgendwie sowas ?
Code:
str = {'Name11_01_2013'  'Name22_01_2013' 'Name02_01_2013' 'Name31_01_2013'  'Name01_01_2013'  'Name01_01_2013'};
str2=datenum(strrep(str,'Name',''),'dd_mm_yyyy');
[B,IX] = sort(str2);
strsort=str(IX);

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Subotai
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 18.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.08.2013, 21:04     Titel:
  Antworten mit Zitat      
danke Dein Code funktionert in dem Bsp

Nun wollte ich die durch die 1 Zeile die Tabelle sortieren, darum habe ich das i:i gewählt, es sollte in meiner 1. Zeile jede Spalte durchgehen, das Datum auslesen und dann sortieren.

Kann ich jetzt sagen:

Code:


str=raw(1,2:end)
 


und es wird die die Spalte 2 bis n nach dem Datum sortiert?

Vielen Dank

PS Ich verstehe Deine Formel so:
strrep sagt hier: werfe Name raus und behalte Datum, dh das " sagt, dass was vorher kommt rausfliegt, korrekt?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.08.2013, 21:06     Titel:
  Antworten mit Zitat      
welche zahlen leigen denn im bereich i bis i ^^ genau i Smile
Zitat:
strrep sagt hier: werfe Name raus und behalte Datum, dh das " sagt, dass was vorher kommt rausfliegt, korrekt?
ja
Zitat:
Kann ich jetzt sagen:
Code:
str=raw(1,2:end)

und es wird die die Spalte 2 bis n nach dem Datum sortiert?
probiers doch aus ^^ sollte aber.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Subotai
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 18.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2013, 17:45     Titel:
  Antworten mit Zitat      
Vielen Dank, es scheitert nur beim Verknüpfen mit den Headers
Code:

str=raw(1,2:end)
 

bezieht sich nur auf Werte-Spalten aber nicht auf den Head,
dieser ist wiefolgt definiert:
Code:

Name01_01_2013 = data(:,2);
....
Name31_01_2013  = data(:,31);
 


Meine Idee

Code:


str={'name*'}
 


leider funktioniert dies nicht.
Wo liegt mein Denkfehler?
Vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 11.08.2013, 18:01     Titel:
  Antworten mit Zitat      
du wirfst mit variablen um bei denen ich weder weiß wo die herkommen noch wie die aussehen ^^

Zitat:
Meine Idee
Code:

str={'name*'}

leider funktioniert dies nicht.
ich weiß weder was die idee noch die absicht dahinter ist ^^ welche fehler auftreten kann ich auch nur raten ^^.
Zitat:
bezieht sich nur auf Werte-Spalten aber nicht auf den Head,

versteh ich nicht... was ist ein "head"
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Subotai
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 18.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2013, 18:24     Titel:
  Antworten mit Zitat      
Danke für die rasche Antwort und sorry für meine unklare Defnition

ich habe das File automatisch einlesen lassen, was ich habe ist z.B. folgends

Code:

Time=data(:,1)
Name01_01_2012=data(:,2)
Name01_02_2012=data(:,3)
Name01_03_2012=data(:,4)
...
....
Name01_05_2013=data(:,n) %n= Maximum meiner Spaltenzahl
 


Das Problem:
Es kann sein, dass die Daten nicht so wie oben sortiert vorliegen sondern unchronologisch abgespeichert worden sind:

Code:

Time=data(:,1)
Name01_01_2013=data(:,2)
Name01_05_2012=data(:,3)
Name01_02_2013=data(:,4)
...
....
Name01_09_2012=data(:,n) %n= Maximum meiner Spaltenzahl
 




Was ich will:
1. das ganze nach Datum sortieren lassen - das es aussieht wie das erste Beispiel und auch so sortiert abspeichern
2. jede Spalte plotten,speichern, dabei den Spaltennamen (das habe ich mit Head/Header gemeint) für Filename und Plotname verwenden.

Was nicht gelingt:
automatisiert auf den Spaltennamen zuzugreifen, also irgendwas der Form Name* zu realisieren.
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.