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

leere cells löschen

 

creme
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 08.08.2017, 14:42     Titel: leere cells löschen
  Antworten mit Zitat      
servus leute,

ich hab ein 245x2 cell. ab zeile 124 bis 245 (Die Anzahl der Zeilen kann jedoch variieren) sind in beiden spalten nur noch leere cells vorhanden die ich gerne löschen würde.

ich hab schon einiges versucht zuletzt mit
Code:
e = cellfun('isempty', F);    % Leere Zellen finden
F(e) = [];
 


es klappt aber nichts.

Hoffe ihr könnt weiter helfen.

Gruß tobi
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

Zitat:
es klappt aber nichts.

und welche Probleme treten dabei auf?
Vermutlich musst du das noch mit all kombinieren, z.B.
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 08.08.2017, 15:15     Titel:
  Antworten mit Zitat      
ich habe es gerade damit versucht
Code:


das problem ist, dass ich ein 246x1 cell bekomme mit 0 Einträgen. Dabei hätte ich aber gerne mein Cell nur ohne die [] Einträge in beiden Spalten.
Also vorher ist es ein 245x2 Cell und danach sollte es ein 123x2 cell sein. Da in beiden Spalten von 124-245 nur solche Einträge vorhanden sind: []

Nein das mit "all" hilft auch nicht Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 08.08.2017, 15:34     Titel:
  Antworten mit Zitat      
hiermit
Code:
posEmptyCells = find(all(cellfun(@isempty, F), 2));
 
bekomm ich lediglich den Zeilenindex zurück in welchem nur [] drin steht.

aber gelöscht bekomm ich diese zeilen noch nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Code:
F(e,:) = []

Das find ist übrigens unnötig.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 08.08.2017, 15:41     Titel:
  Antworten mit Zitat      
Perfekt Harald Cool

Danke für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 08.08.2017, 18:04     Titel: zahl suchen mit vektor vergleichen
  Antworten mit Zitat      
hey leute,

ich brauch noch einmal eure hilfe Laughing

ich bin hier im Forum leider nicht fündig geworden.

ich habe in meinem cell (247x2) in den ersten Zeilen und der 2. Spalte immer eine Zahl stehen. Jetzt habe ich einen Vektor mit Zahlen von 1,..,7! und ein Cell, welches folgendermaßen aufgebaut ist:

Code:

         1      1
         1      2
         1      4
         1      6
         0     [13]%Diese beiden Spalten sollten verschwinden
         1     [12]


In den ersten 4 Zeilen der 2. Spalte stehen einzelne Zahlen. Die Zahlen die hier nicht stehen, z.B:3,5,7 möchte ich später in den Zeilen drunter, wenn Zahlenpaare wie z.B. [1 3] oder [6 7] oder sogar [1 2 3 7] vorkommen, löschen.

Ich hoffe jemand kann mir einen Ansatz geben wie man hier vorgehen könnte.

gruß tobi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.08.2017, 08:20     Titel:
  Antworten mit Zitat      
Hallo,

die erste Frage wäre: warum überhaupt ein Cell Array? cell2mat hilft, wenn der Inhalt der Zellen passend formatiert ist, z.B. eine einzelne Zahl.

Mir ist noch nicht klar, was die genaue Fragestellung ist. Ich vermute, die Zeilen sollen verschwinden, aber nach welchem Kriterium?

Grundsätzlich sollte ismember helfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 09.08.2017, 09:11     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo, die erste Frage wäre: warum überhaupt ein Cell Array?

Sicher gibt es bessere Möglichkeiten um sowas darzustellen. Aber ein Cell war der erste Einfall den ich hatte um es später noch zu bearbeiten.

Harald hat Folgendes geschrieben:

Mir ist noch nicht klar, was die genaue Fragestellung ist. Ich vermute, die Zeilen sollen verschwinden, aber nach welchem Kriterium?



Wie oben schon beschrieben hab ich in diesem Beispiel Zahlen von 1,..,7 aber in den ersten Zeilen tauchen davon nicht alle auf!!!

Die welche nicht auftauchen (hier z.B. 3,5,7 ) sind in meiner späteren Analyse nicht von interesse. Sollten solche Zahlenpaare auftauchen
Code:
[1 3] [1 3 4] [5 6] [1 2 7]


würde ich gerne die ganze Zeile löschen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

okay. Und hast du es nun mal mit ismember versucht?
Wenn ja, was genau hast du versucht und welche Probleme sind dabei aufgetreten?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 09.08.2017, 11:05     Titel:
  Antworten mit Zitat      
hallo harald,

Die herangehensweise macht mir Schwierigkeiten.Ich weiß nicht genau wie ich auf mein Problem ismember anwenden soll Crying or Very sad

Im Anhang ist z.B. rot markiert was ich gerne gelöscht hätte (beide Zeilen versteht sich natürlich) überall wo eben Zahlen auftauchen die oben von 1-6 nicht dabei waren. Je nach Datensatz kann sich das aber unterscheiden.

cell2.PNG
 Beschreibung:

Download
 Dateiname:  cell2.PNG
 Dateigröße:  12.12 KB
 Heruntergeladen:  251 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.08.2017, 11:14     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die Daten gezippt als .mat-File zur Verfügung stellst, macht es das deutlich leichter, weil man seine Code-Vorschläge dann auch ausprobieren kann. So kann ich nur einen Versuch zur Verfügung stellen.

Code:
v = 1:7;
bad = setdiff(v, cell2mat(M(1:4, 2)));
toRemove = cellfun(@(x) any(ismember(x, bad)), M(:,2));
M(toRemove, :) = [];


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 09.08.2017, 12:22     Titel:
  Antworten mit Zitat      
Wenn v immer eine unterschiedliche länge/gröpe hat könnte man das sogar mit
Code:
v=1:size(matrix,2)
lösen.

Code:
M(1:4, 2);
müsste man allerdings immer wieder neu anpassen. aber es funktioniert Shocked

Danke für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
M(1:4, 2);
müsste man allerdings immer wieder neu anpassen.

Auch das lässt sich sicher automatisieren, wenn du eine Regel dafür angeben kannst - beispielsweise statt 4 das letzte Element, das keine Cell ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
creme
Themenstarter

Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 10.07.17
Wohnort: ---
Version: 2019b
     Beitrag Verfasst am: 09.08.2017, 13:45     Titel:
  Antworten mit Zitat      
vielleicht so etwas wie iscell ?
damit hab ich es mal versucht
Code:
Index = find(contains(F(:,2),[]));

dann kommt folgende Fehlermeldung:
Error using contains (line 39)
First argument must be a string array, character vector, or cell array of character vectors.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.