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

Datensatz von textscan in Array packen

 

Sam1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2011, 20:35     Titel: Datensatz von textscan in Array packen
  Antworten mit Zitat      
Hallo,

ich habe folgenden Codeausschnitt:
Code:

rowdata = textscan(line, '%*c, %d8, %*d8, %*d8, %f, %f, %f');
refdata(i,:) = rowdata;
i = i + 1;
 


"converting from cell to double" kommt als Fehlermeldung.
Wie schaffe ich es die 4 Werte (1xdezimal, 3xfloat) in ein Array zu packen?

Vielen Dank im voraus

Gruß Sam


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.03.2011, 00:11     Titel: Re: Datensatz von textscan in Array packen
  Antworten mit Zitat      
Hallo Sam,

Dann schau Dir doch mal an, was in "rowdata" drinsteht. Das ist nämlich ein CELL array. "rowdata{1}" etc wir weiter helfen,
Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sam1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2011, 13:22     Titel:
  Antworten mit Zitat      
Hallo Jan,

wie man auf ein Zelle zugreift ist mir schon klar, dass mach ich bereits beim Stringvergleich auf diese Art. Aber hier ist es anders:

Code:

while(~feof(file))
    line = fgetl(file);
    type = textscan(line, '%c, %*d8, %*d8, %*d8, %*f, %*f, %*f');
   
    if(strcmp(type{1}, 'S'))
        rowdata = textscan(line, '%*c, %d8, %*d8, %*d8, %f, %f, %f');
        refdata(i,:) = rowdata;
        i = i + 1;
    end
end
 


line =
Code:
S   10   0   7   1143.0   -43.180   -0.002


In der Variablen "line" habe ich die gültigen Werte vorliegen, allerdings enthält rowdata keine Daten!? Ich möchte 4 Werte (unabhängig vom Datentyp abspeichern, ist das ohne Konvertierung möglich? Mir ist ebenfalls unklar warum in rowdata keine Daten enthalten sind wohingegen in type der Wert richtig ausgelesen wird.

Hoffe es gibt noch andere Vorschläge...

Gruß Sam
 
Sam1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2011, 16:21     Titel:
  Antworten mit Zitat      
In rawdata stehen jetzt die entsprechenden Daten. Das Komma zwischen den Platzhaltern war der Fehler. Der Code ist somit folgender:

Code:

while(~feof(file))
    line = fgetl(file);
    type = textscan(line, '%c %d8 %*d8 %*d8 %*f %*f %*f');

    if(strcmp(type{1}, 'S'))
        rowdata = textscan(line, '%*c %f %*d8 %*d8 %f %f %f');
        refdata(i,:) = rowdata;
    else
        refdata(i,:) = [NaN NaN NaN NaN];
    end
    i = i + 1;
end
 


Ich bekomme nach wie vor die Fehlermeldung "Conversion to double from cell is not possible" für beide Zuweisungen an refdata. NaN ist im übrigen als 0.0 deklariert, somit entsprechen alle Werte einer float Variablen. Wenn ich als Array [rowdata{1},..., rowdata{4}] an refdata übergebe, so bekomme ich ebenfalls einen Fehler. Hat niemand mehr eine Idee?

Gruß Sam
 
Sam1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2011, 17:04     Titel:
  Antworten mit Zitat      
mit cell2mat(rowdata) funktioniert es jetzt plötzlich, obgleich die matrizenformatierung mit der Exponentenschreibweise gewöhnungsbedürftig ist. Ich habe noch ein Problem: Die gültigen Daten werden nacheinander folgerichtig in refdata geschrieben, die Zeilen danach enthalten dann jedoch nochmals alle vorkommenden Zeilen der Textdatei inklusive den ungültigen, wie kann das sein bzw. wie kann ich das vermeiden?

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