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

Matlab- Tabelle Zeilenweise lesen und dann filtern

 

CharlotteBerlin
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.11.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2021, 18:09     Titel: Matlab- Tabelle Zeilenweise lesen und dann filtern
  Antworten mit Zitat      
hey leute Very Happy ,
ich habe eine Excel Datei eingelesen mit readtable und dadurch in Tabellen Form.
[code]Datei=readtable('beispiel.xlsx', 'ReadRowNames', true);[/code] die Tabelle hat 7xSpalten.
in Spalte 5 sind Kundennummer hinterlegt
ich möchte jetzt, dass eine Schleife zuerst Zeilenweise die Zeilen sich anschaut und mir dann die Zeilen ausgibt, die in Spalte 5 die selbe Kundennummer haben, damit ich die einen Kunden zu ordnen kann und dann damit ein Kundinprofil erstellen kann.

Mein Problem ist, dass ich es nicht hinkriege dass mein Programm es Zeilenweise liest, da es ja eine Tabelle ist.
könnte mir da bitte jemand weiterhelfen Question
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.11.2021, 21:58     Titel:
  Antworten mit Zitat      
Hallo,

was hast du versucht, welche Probleme sind dabei aufgetreten?

Wenn du die Daten in irgendeiner Form zusammenfassen willst, kannst du auch findgroups / splitapply oder groupsummary verwenden.

Je konkreter die Frage gestellt ist, desto besser kann man helfen. Gut wäre z.B. eine kleine Beispieldatei und der dafür gewünschte Output.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
CharlotteBerlin
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.11.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2021, 12:09     Titel:
  Antworten mit Zitat      
[code]

Datenmix=readtable('Kunden.xlsx', 'ReadRowNames', true);

% nur die wichtigsten Daten werden ausgegeben
benoetigeDaten=Datenmix(:,5:11);


z=benoetigeDaten(:,{KundenID'});%tale
%unterschiedlichen ladepunkte erkennen
un_z=unique(z);%table



% überall 1 wo die stadtion übereinstimm
xi = 1;
xii = 1;
vektor = [];

while xi <= size(un_z, 1)
H_logic = all(ismember (z, un_z(xi, 1)), 2);
H = find(H_logic>0);
Startzeit = [];
Endzeit = [];
xii = 1;


end
[/code]


Hi Harald Very Happy ,
mein Problem ist, dass die Schleife die einzelnen Kunden nicht im Workspace ausgibt sondern direkt zum letzten Kunden springt und nur seine Übereinstimmende ID ausgibt.

mein zweites Problem ist, dass ich eigentlich möchte dass die Zeilen die in H_logic mit einer 1 hinterlegt sind, dass diese Zeilen in der Hauptdatei (benoetigeDaten oder Datenmix) angezeigt werden können , damit die werte aus der entsprechenden Zeile in der Hauptdatei betrachtet werden.

ich hoffe du verstehst was ich meine

Viele Grüße
Charlotte
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ein Problem sehe ich darin, dass du die Variablen in der while-Schleife überschreibst. Du könntest z.B. Cell Arrays erstellen, um die Ergebnisse jeder Iteration zu speichern:
Code:
H{xi} = find(H_logic>0);


Sollte xi in der while-Schleife nicht hochgezählt werden? Sonst wird das ja eine Endlos-Schleife. Warum zudem xi und xii?

Für das zweite Problem würde ich es so versuchen:
Code:
Datenmix(H, :)


Wenn du eine Beispieldatei zur Verfügung stellst, kann man damit viel besser herumprobieren.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
CharlotteBerlin
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 23.11.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2021, 12:51     Titel:
  Antworten mit Zitat      
Hi Harald,
xi habe ich willkürlich gewählt um die Variable hochzuzählen, dies passiert am ende der while Schleife.
dein Tipp mit Cell hat mir schon weiter geholfen, das Problem ist nun, das H nur auf den letzten xi zugreift aber in H_logic sind ja alle Kunden angelegt.
Ich möchte dass er z.B. für H bei xi=1 sagt in der Zeile 4, 7 , 9, 10 kommt eine eins vor, nun würde ich eine Verzweigung oder Schleife machen die dann für diese Zeilen die Startzeit/Endzeit aus der Var. benoetigeDaten zugreift.
Aber irgend wie klappt alles was ich ausprobiert habe nicht, Weder für H noch eine Verzweigung aufzubauen.

ich hoffe du konntest verstehen was ich meine Confused
Lässt sich die Excel Datei öffnen?
habe Sie zwar angehängt sehe sie aber nicht

[code]

%Datei einlesen
Datenmix=readtable('AufgabeMatlab.xlsx', 'ReadRowNames', true);

% nur die wichtigsten Daten werden ausgegeben
benoetigeDaten=Datenmix(:,5:16);

%auf bestimmt spalte zugreifen
x=benoetigeDaten(:,{'Startzeit'});%table
xd = table2array(x);%double
xdt= datetime(xd, 'ConvertFrom', 'datenum', 'Format', 'HH:mm:ss');

%Endzeit
y=benoetigeDaten(:,{'Endzeit'});% table
yd = table2array(y);%double
ydt = datetime(yd, 'ConvertFrom', 'datenum', 'Format', 'HH:mm:ss');

%tat Enladezeit
tat_y=benoetigeDaten(:,{'Tat_Endlzeit'});% table
tat_yd = table2array(tat_y);%double
tat_ydt = datetime(tat_yd, 'ConvertFrom', 'datenum', 'Format', 'HH:mm:ss');

%tat Aufenthaltsdauer
tat_l=benoetigeDaten(:,{'Tat_Aufenthaltsdauer_HH_MM_SS_'});% table
tat_ld = table2array(tat_l);%double
tat_ldt = datetime(tat_ld, 'ConvertFrom', 'datenum', 'Format', 'HH:mm:ss');

n=benoetigeDaten(:,{'Menge'});% table

z=benoetigeDaten(:,{'KundenID'});%tale
%unterschiedlichen KundenID erkennen
un_z=unique(z);%table



% überall 1 wo die stadtion übereinstimm
xi = 1;

H_logic=cell(xi, (size(un_z,1)));
while xi <= size(un_z, 1)
H_logic{1,xi}= [all(ismember (z, un_z(xi, 1)), 2)];
%Problem mit H, er gibt es nur für den letzten xi aus
H = find(H_logic{1,xi}>0);



%hier möchte ich eine If oder for einbauen, damit ich in die einzelnen
%zellen cell(1, xi) rein schauen kann, wenn eine '1' ausgegebn wird (var. H),
%werden diese zeilen benötigt, damit ich im nächsten schritt die
%Start-/Endzeit für diese Zeilen betrachten kann (aus der Var. benoetigeDaten).
% ich muss später nämmlich für die jeweiligen kunden plots erstellen



xi = xi+1;

end
[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.12.2021, 15:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
dies passiert am ende der while Schleife.

Jetzt schon.

Zitat:
ich hoffe du konntest verstehen was ich meine

Leider nein.

Zitat:
Lässt sich die Excel Datei öffnen?
habe Sie zwar angehängt sehe sie aber nicht

Ich sehe sie auch nicht. Da scheint wohl beim Hochladen etwas schiefgegangen zu sein.
Bitte neben der Datei auch hochladen, was denn am Ende konkret die Ergebnisse sein sollen. Dann kann ich dir vielleicht helfen, dort hin zu kommen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.