Verfasst am: 11.06.2013, 14:59
Titel: Bestimmte Zeilen und Spalten aus Tabelle löschen
Hallo gomatlab Community,
ich hoffe, dass ihr mir helfen könnt. Ich ermögliche dem User in einer GUI eine Datei auszuwählen und diese zu öffnen (nehmen wir mal Excelfile an).
Wenn der User eine Tabelle öffnet, wird diese im Workspace angezeigt. Leider erscheinen manchmal auch Zeilen oder Spalten die nur mit "NaN" gefüllt sind (meistens die letzte Spalte und letzte Zeile, kann mir nicht erklären wieso ). Ich möchte nun alle Spalten UND Zeilen, in denen NaN vorkommt löschen, bekomme es aber leider nicht hin.
% Das habe ich versucht, um es zu erreichen. [m,n]=size(raw);
for zeile=1:m
for spalte=1:n
ifisnan(raw{zeile,spalte})
raw(zeile,spalte)={''}; % Hier wird NaN nur ersetzt aber anscheinend nicht gelöscht. In der Tabelle erscheint nun statt NaN eine eckige Klammer "[]". Ich muss aber die ganze Spalte und Zeile loswerden. end end end
Hallo,
suche doch erstmal die Stellen, wo NAN vorkommen
danach kannst die entsprechenden Zeilen/Spalten löschen
In Matrix ist es nicht möglich nur ein Wert zu löschen, man kann entweder die ganze Zeile oder Spalte löschen. Deswegen ist die Gefahr groß, dass du auch Nutzwerte löschst.
ALL liefert True, wenn die ganze Zeile oder Spalten mit True-Werten gefüllt ist. Entspricht
ANY leifert True - Wenn mindest ein True-Wert in Zeile/Spalte vorkommt.
denny: Kann es jetzt leider nicht mehr machen, aber werde deinen Vorschlag morgen in der Uni sofort ausprobieren, meld mich danach nochmal Vielen Dank .
Harald: Es geht darum die ganze Spalte bzw. Zeile zu löschen wenn NUR NaN drin steht. Also keine einzelnen Elemente . Das merkwürdige ist, dass die NaN wirklich bisher nur in der letzten Zeile und/oder letzten Spalte war. Werde den Vorschlag mit num,txt wahrscheinlich berücksichtigen, da ich mit raw oft Probleme hatte. Danke.
Das merkwürdige ist, dass die NaN wirklich bisher nur in der letzten Zeile und/oder letzten Spalte war. Werde den Vorschlag mit num,txt wahrscheinlich berücksichtigen, da ich mit raw oft Probleme hatte. Danke.
NaN stehen für leeren Cellen in Excel, also must du wohl da etwas eingetragen haben
for zeile=1:m
for spalte=1:n
ifisnan(raw{zeile,spalte});
nanpos(zeile,spalte) = isnan(raw{zeile,spalte});
end end end
raw(all(nanpos,2),:)=[];
raw(:,all(nanpos,1))=[];
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
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.