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

Entfernen von Zeilen/Spalten bei konkretem String

 

DasFragezeichen
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2016, 01:15     Titel: Entfernen von Zeilen/Spalten bei konkretem String
  Antworten mit Zitat      
Guten Abend,
mittlerweile habe ich mich – als Anfänger – bereits etwas eingehender mit Matlab beschäftigen können. Dennoch habe ich nach wie vor das Gefühl vor einem großen Berg zu stehen. Folgende Situation liegt meiner Anfrage zugrunde:

In meinem Besitz befindet sich eine Excel-Tabelle (ein Beispieldokument werde ich dieser Nachricht beifügen), welche entzerrt werden soll. Das Kriterium ist dabei, dass – sobald ein bestimmtes alpha-numerisches Gefüge in einer Zelle erscheint – die gesamte Zeile/Spalte entfernt wird.

Ich habe nun ein paar Verrenkungen mit strcmp/strfind/cellfun durchgeführt, konnte jedoch leider keine Veränderungen/Ergebnisse erzielen. Interessanterweise wird manches Mal jedoch auch kein Fehler ausgeworfen.

Die von mir angehängte .xls-Datei ist so gestaltet, dass der fragliche String rot markiert worden ist. Darüber hinaus wurde die gesamte Zeile gelb markiert, was deren vollständige Löschung (anhand des Suchkriteriums des rot markierten Strings) signalisieren soll.

Wie immer gilt: Vielen Dank für die Hilfe!

Viele Grüße
DasFragezeichen

Datensatz.xls
 Beschreibung:

Download
 Dateiname:  Datensatz.xls
 Dateigröße:  43.5 KB
 Heruntergeladen:  347 mal
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: 26.01.2016, 19:01     Titel: Re: Entfernen von Zeilen/Spalten bei konkretem String
  Antworten mit Zitat      
Hallo DasFragezeichen,

Bitte poste den bisherigen Code, weil man sich dann das Einlesen des Excel-Files etc sparen kann. Zudem ist es immer leichter Fehler im Code zu finden, als ihn komplett neu zu schreiben.

Kannst Du das Suchkriterium mit Worten beschreiben?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 01:43     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für Deine Nachricht.
Das Suchkriterium ist hier der Begriff „Mieteinnahmen“, als ein Bestandteil einiger der Zellen der ersten Spalte.

Zunächst habe ich Folgendes ausprobiert:

Code:

[~, ~, raw] = xlsread('Datensatz.xlsx');
raw(strcmp(raw(:, 1), 'Mieteinnahmen'), :) = [];


Dieser (der letzte) Ausdruck hat jedoch nach meinem Eindruck nichts bewirkt – nicht einmal eine Fehlermeldung ausgespuckt.

Anschließend habe ich folgende Variante nachgebaut:

Code:
[num, txt, raw] = xlsread('Datensatz.xlsx');
B = raw(6:26,1);
num = num (~strcmp(B, 'Mieteinnahmen'), :);


Auch diese Variante rief keinen Fehler (nach Anpassung der zu verknüpfenden Variablen) hervor. Der Befehl führte jedoch - nach meinem bisherigen Verständnis - auch zu keinem sichtbaren Ergebnis.

Eine dritte Variante war eine Konstruktion mit „cellfun“. Diese Version war jedoch in sich fehlerhaft, weshalb ich sie wieder verworfen habe und nicht mehr angemessen rekonstruieren kann.

Viele Grüße
DasFragezeichen
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: 27.01.2016, 11:23     Titel:
  Antworten mit Zitat      
Hallo DasFragezeichen,
Code:
[~, ~, raw] = xlsread('Datensatz.xlsx');
raw(strcmp(raw(:, 1), 'Mieteinnahmen'), :) = [];

Der Code entfernt alle Zeilen, in denen in der erste Spalte der String "Mieteinnahmen" steht. Das steht aber nirgendwo. Ich finde nur "Objekt 2 - Mieteinnahmen". Das ist aber eindeutig nicht der string "Mieteinnahmen".

Du brauchst entweder ein Vergleich mit dem rechten Teil des Strings, siehe http://www.mathworks.com/matlabcent.....leexchange/27032-strncmpr. Oder Du suchst nach Strings, die irgendwo den gesuchten Teil enthalten:
Code:
index = cellfun('isempty', strfind(raw(:,1), 'Mieteinnahmen'));
rad(index, :) = [];


Wenn du Probleme mit einem Befehl hast, hier strcmp , ist das Lesen der Dokumentation immer eine gute Idee.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 13.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2016, 23:29     Titel:
  Antworten mit Zitat      
Besten Dank für Deine Hilfe sowie Deine Hinweise, Jan!

Der von dir bereitgestellte Code passt nahezu vollständig. Als kleine Modifikation habe ich lediglich cellfun negiert. Zudem habe ich den Betrachtungsbereich der raw-Variable etwas eingeschränkt. Ansonsten wären die Prüfwerte 0-1 verschoben und damit nicht korrekt.

Viele Grüße
DasFragezeichen
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.