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

Erste NaN-Spalte einer Zelle anzeigen

 

flurry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2014, 21:09     Titel: Erste NaN-Spalte einer Zelle anzeigen
  Antworten mit Zitat      
Hallo,

ich habe eine Zelle.

Code:
Zelle =

    [ 5]    [3]    [NaN]    [NaN]    [NaN]
    [ 8]    [4]    [NaN]    [NaN]    [NaN]
    [10]    [6]    [NaN]    [NaN]    [NaN]



Wie kann ich mir die erste Spalte, in der nur NaN auftritt, anzeigen lassen.

In der gezeigten Zelle soll mir die '3' ausgegeben werden, weil die dritte Spalte die erste Spalte ist, wo alle Einträge NaN sind.

Ich vermute, dass es mit cellfun und isnan funktioniert. Weiter weiß ich leider nicht.


Yvonne
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 31.07.14
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 12.11.2014, 21:32     Titel:
  Antworten mit Zitat      
Hi,

warum hast Du eigentlich die numerischen Werte in ein Cell Array verpackt und nicht einfach in eine Matrix? (= wesentlich(!) speichereffizienter)
Mit einer Matrix lässt sich das Problem folgendermaßen lösen:

Code:

% Create cell array
C = {5 3 NaN NaN NaN; ...
     8 4 NaN NaN NaN; ...
    10 6 NaN NaN NaN};

% Convert to matrix
M = cell2mat(C);

% Find first column of NaNs
find(all(isnan(M)), 1, 'first')
 


LG, Yvonne
Private Nachricht senden Benutzer-Profile anzeigen
 
flurry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2014, 22:56     Titel:
  Antworten mit Zitat      
Hallo,

weil zum Teil nicht nur Zahlen wie in meinem Beispiel als Einträge stehen, sondern auch strings.

Wie kann ich das mit einer Zelle machen?
 
Yvonne
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 31.07.14
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 12.11.2014, 23:06     Titel:
  Antworten mit Zitat      
Code:

% Create cell array
C = {5 3 NaN NaN NaN; ...
     8 4 NaN NaN NaN; ...
    10 6 NaN NaN NaN};

% Find NaNs
M = cellfun(@isnan, C);

% Find first column of NaNs
find(all(M), 1, 'first')
 


LG, Yvonne
Private Nachricht senden Benutzer-Profile anzeigen
 
flurry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2014, 12:03     Titel:
  Antworten mit Zitat      
Danke für deine Hilfe Smile

Könntest du mir auch sagen, wie ich die erste Spalte anzeigen lassen kann in der NaN ODER leere Einträge (empty) auftauchen?
Wie ich jetzt sehen, kann es in meiner Zelle nämlich auch vorkommen, dass einzelne Spalten auch garkeinen Eintrag (empty) haben. Ich möchte deshalb keinen Unterschied zwischen NaN oder empty machen.

Merci
 
flurry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2014, 12:20     Titel:
  Antworten mit Zitat      
Leider funktioniert dein Vorschlag nicht.
Ich bekomme die Fehlermeldung:

Code:
Error using cellfun
Non-scalar in Uniform output, at index 1, output 1.
Set 'UniformOutput' to false.



Wenn ich es so versuche:

Code:
% Find NaNs
M = cellfun(@isnan, C, 'UniformOutput', false);

% Find first column of NaNs
find(all(M), 1, 'first')


bekomme ich die Fehlermeldung

Code:
Undefined function 'all' for input arguments of type 'cell'.


Wie schon erwähnt, habe ich ich nicht nur double-Einträge in meiner Zelle C, sondern auch strings.

Weißt du weiter?
 
flurry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2014, 12:25     Titel:
  Antworten mit Zitat      
Ach ja

die "string" sind im char-Format und die "NaN" sind im double-Format.
 
flurry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2014, 12:32     Titel:
  Antworten mit Zitat      
Ich habe jetzt die Lösung gefunden:

Code:


% Find NaNs
M = ~cellfun(@ischar, C, 'UniformOutput', false);

% Find first column of NaNs
find(all(M), 1, 'first')

 
 
Yvonne
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 31.07.14
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 13.11.2014, 14:23     Titel:
  Antworten mit Zitat      
Smile
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.