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

cell2mat mit einer ziemlich häßlichen Zelle

 

Nordlicht
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2017, 18:40     Titel: cell2mat mit einer ziemlich häßlichen Zelle
  Antworten mit Zitat      
Moin moin,
also ich habe eine ziemlich unschöne Zelle, ausgelesen aus einer .xls Datei.

Diese Zelle enthält nun Datumsangaben (die ich gern als String extrahieren würde),
viele Zeilen mit NaN, Dezimalwerte mit Punkt oder Komma (zum Glück Spaltenweise einheitlich) und spaltenweise auchnoch Einheiten.
Jeder Inhalt außer NaN ist in Hochkommas '' gestellt, durch xlsread.

Wenn ich nun versuche das Ganze mittels
Code:

rawData=cell2mat(rawData)
 

zu konvertieren, bekomme ich folgende Meldung:

"Error using cell2mat (line 45)
All contents of the input cell array must be of the same data type."

Gut und schön, also versuchte ich alle NaN's in Nullen zu konvertieren.
Nebenfrage: Ist das Vorhandensein der NaN Zellen das Problem an der Stelle?

Code:

rawData(~isfinite(rawData))=0
 

Liefert mir nun
"Undefined function 'isfinite' for input arguments of type 'cell'."

Irgendwie habe ich das Gefühl, dass sich die Katze in den Schwanz beißt.
Wie bekomme ich diese Zelle nun in eine hübsche Matrix vom Typ String die ich dann wie gewohnt bearbeite?
Vielleicht merkt man es mir an, ich habe bisher reichlich wenig Erfahrung mit Cell Variablen.

Lieben Gruß
euer Nordlich
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: 17.02.2017, 18:51     Titel:
  Antworten mit Zitat      
Hallo,

für cell2mat müssen die Daten alle gleichen Datentyp haben.

Es könnte einfacher sein, wenn du die Daten gleich als Table einliest.

Es wäre auch gut, wenn du die Datei bzw. einen Ausschnitt davon postest, damit wir wissen, wovon du schreibst.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2017, 19:54     Titel:
  Antworten mit Zitat      
Hier ein Ausschnitt der Tabelle.
Das alle Felder den gleichen Datentyp haben müssen dachte ich mir irgendwie, eigentlich sollten doch auch alle Strings sein, da ja alles in Hochkommas steht, weshalb ich denke das die Felder NaN das Problem sind.

Ich würde die Daten liebend gern direkt als Tabelle einlesen, ich habe bei xlsread() keine entsprechenden Parameter gefunden, magst du mir da auf die Sprünge helfen?

Lieben Gruß
das Nordlich

Beispiel.xls
 Beschreibung:

Download
 Dateiname:  Beispiel.xls
 Dateigröße:  30.5 KB
 Heruntergeladen:  356 mal


Zuletzt bearbeitet von Nordlicht am 17.02.2017, 20:56, insgesamt einmal bearbeitet
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: 17.02.2017, 20:52     Titel:
  Antworten mit Zitat      
Hallo,

das mit dem Ausschnitt hat wohl nicht geklappt. Ich sehe in diesem Thread jedenfalls keine Anhänge.

Zum Einlesen als Tabelle: readtable .

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2017, 21:21     Titel:
  Antworten mit Zitat      
Tausend Dank Harald!
Private Nachricht senden Benutzer-Profile anzeigen
 
Nordlicht
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2017, 20:42     Titel:
  Antworten mit Zitat      
Habe vorgestern bloß noch schnell den Befehl readtable ausprobiert ohne weiter zu arbeiten, nun muss ich leider feststellen, mich zu früh gefreut zu haben.

Ich möchte ein "stinknormales" double array aus der excel-file auslesen. So sehr ich es auch versuche, ich bekomme kein array mit dem ich wie üblich arbeiten kann.
In dieser Übersicht http://ch.mathworks.com/help/matlab/data-type-conversion.html
konnte ich leider auch keine Konvertierungsmöglichkeit finden.

im Netz bin ich über
Code:

gestolpert um auf folgenden Fehler hingewiesen zu werden:
Error using cell2mat (line 42)
You cannot subscript a table using only one subscript. Table subscripting requires both row and variable subscripts.
Mir ist nicht klar, was für ein Index hier von Nöten ist.

Wie bekomme ich nun bspw. "nur" F1 bis K4 aus meiner Excel Tabelle in ein oder mehrere Arrays?

Lieben Gruß
euer Nordlicht
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: 19.02.2017, 21:53     Titel:
  Antworten mit Zitat      
Hallo,

table2array dürfte hier eine bessere Wahl sein als cell2mat.

Zitat:
Wie bekomme ich nun bspw. "nur" F1 bis K4 aus meiner Excel Tabelle in ein oder mehrere Arrays?

Wenn du nur diesen Bereich importieren willst, kannst du das als Parameter-Wert - Paar 'Range' bei readtable angeben.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2017, 10:21     Titel:
  Antworten mit Zitat      
Ich bin im Moment auf der Arbeit und komme erst später dazu, das auszuprobieren, aber ich glaube das ich table2array ausprobiert habe und mir eine Zelle zurückgegeben wurden. Womit ich wieder an meinem Ausgangsproblem stehe.

Habe das Gefühl mich furchtbar doof anzustellen, bin dir sehr dankbar für die Geduld Harald!
Private Nachricht senden Benutzer-Profile anzeigen
 
Nordlicht
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 08.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2017, 19:16     Titel:
  Antworten mit Zitat      
Wie ich befürchtete hat mir table2array wieder nur eine Cell zurückgegeben.

Habe mein Problem nun so gelöst:

Code:

str2double(strrep(bloedeZelle, ' kN', ''))
 


Vielen Dank =)

edit: Man muss vorher alle NULL-Zeilen bzw Elemente mittels Indizierung löschen, bzw rausschneiden.
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 - 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.