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

Cell Array / Matrix auf Einträge checken

 

cound

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2011, 15:59     Titel: Cell Array / Matrix auf Einträge checken
  Antworten mit Zitat      
Hi,

ich sitze gerade an folgendem Problem :

Ich habe ein cell array im format 10x3, welches 10 wegpunkte repräsentiert (x,y,z Koordinate)

diese wegpunkte werden später für diverse berechnungen herangezogen.

was ich nun möchte ist das ich überprüfen kann wieviele wegpunkte tatsächlich vorliegen ( die wegpunkte werden in ner gui in nen uitable eingetragen). wenn also anstatt 10 wegpunkten nur 3 eingegeben wurden möchste ich auch nur die ersten 3 zeilen des tables berücksichtigen.

hab schon diverse anläufe probiert mit strcmp. (falls keine zahl eingegeben wurde steht ja 'NaN' im array) bzw isempty, aber zu ner lösung gekommen bin ich noch nicht.
im prinzip würde es ja reichen die erste zeile des tables (heisst 'waypoints') zu checken, und wenn keine zahl drinsteht das in ner hilfsvariablen mitzählen, am ende dann 10(also alle zeilen) - hilfsvariable = eingetragene wegpunkte
hapert halt nur an der umsetzung.
jemand ne idee dazu?

thx...


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2011, 16:01     Titel:
  Antworten mit Zitat      
"im prinzip würde es ja reichen die erste zeile des tables (heisst 'waypoints') zu checken"

....meinte natürlich es würde reichen die erste SPALTE zu checken.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.01.2011, 22:52     Titel: Re: Cell Array / Matrix auf Einträge checken
  Antworten mit Zitat      
Hallo cound,

Zeige doch mal, was Du bisher versucht hast. Vielleicht können wir dann eine nötige kleine Verbesserung vorschlagen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cound

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2011, 12:35     Titel:
  Antworten mit Zitat      
hmmm....es war natürlich wieder mehr als einfach, bin wieder mal an meiner unkenntnis der syntax gescheitert :

Code:

for i=1:10
    strcmp (tabledata(i,1),'');                    
    if ans==1                                      
        emptyfield=emptyfield+1;                    
    end                                            
end                                                
wptotal= 10-emptyfield;
 


so funzt es dann...
mein fehler war das ich nicht wusste das wenn ich mit strcmp auf ein leeres feld checken will der befehl dazu dann einfach '' ist...und nicht 'NaN' oder ähnliches.
wieder was gelernt. Smile

trotzdem danke, war bestimmt nicht die letzte frage....
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.01.2011, 19:15     Titel:
  Antworten mit Zitat      
Hallo cound,

Das ist ein ausgesprochen schräges Programm. STCMP ohne Output aufzurufen, um dann hinterher explizit auf "ans" zuzugreifen, ist ziemlich unüblich.
Wie wäre es damit:
Code:
emptyfield = 0;
for i = 1:10;                    
    if strcmp (tabledata{i,1}, '') == 1  % "==1" kann man weglassen!
        emptyfield=emptyfield+1;                    
    end                                            
end                                                
wptotal = 10 - emptyfield;

Aber STRCMP kann ja auch gleich mit einem Cell string arbeiten:
Code:
isEmptyField = strcmp(tabledata(:, 1), '');
wptotal = 10 - sum(isEmptyField);


Aber eigentlich is ISEMPTY besser geeignet, da der Vergleich mit einem leeren String ja gar nichts zu vergleichen hat. Auf einen Cell string wendest Du das am besten mittels CELLFUN an:
Code:
wptotal = sum(not(cellfun('isempty', tabledata(:,1))));


Gruß, Jan
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.