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

Einlesen von Datei mit zusammenhängeneden Koordinaten

 

spright
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2011, 14:46     Titel: Einlesen von Datei mit zusammenhängeneden Koordinaten
  Antworten mit Zitat      
Hallo, Matlab-Gemeinde!
Ich versuche schon seit längerer Zeit eine Messdatei per Programm einzulesen.
Diese sieht so aus:
INPUTVERSION 2010
ANALYSIS EXPLICIT
SOLVER CRASH
TITLE / Platte_biax.pc
OCTRL /
THPOUTPUT INTERVAL 0.05
DSYOUTPUT INTERVAL 0.05
END_OCTRL
RUNEND/
TIME 0.
END_RUNEND
$# NODEID XCOORD YCOORD ZCOORD
NODE / 14-0.6512839114463 19.258672822767191.231735658854
NODE / 15-2.749436223025219.2648551175469191.291400505236
NODE / 16-2.674186997218921.2843902290861191.543802801496
NODE / 17-4.396601757201222.5162570822431191.518204684101

und etwa 18000 Zeilen später gehts dann so weiter

$# M IPART N1 N2 BLANK CBEND
BAR / 14 4000 14 15
BAR / 15 4000 15 16

Mein Ergebnis sollte dann in 2 Matrizen ausgegeben werden und so aussehen:
1.Matrix (="Data_nodes")
14 -0.6512839114463 19.258672822767 191.231735658854
15 -2.7494362230252 19.2648551175469 191.291400505236
usw.....
2.Matrix ("Data_bars"):
14 14 15
15 15 16

Probleme in meinem Programm macht eigtl nur die Matrix "Data_nodes".
Sobald ein Leerzeichen zw der X- & Y-Koordinaten auftaucht (siehe Zeile mit "NODEID 14"), gibt das Programm mir die falsche Z-Koordinate. Es nimmt dann die 1 zu der Y-Koordinate dazu. Also
anstatt 191.231735658854 steht dann 91.231735658854 da.
Was muss ich ändern?


Das wäre mein Code dazu:
Code:

Name_Simulationsdatei='Platte_biax_test.txt';
fid=fopen(Name_Simulationsdatei);
Data_text_nodes=textscan(fid,'%20s',12);

%die nächste Zeile ist mein Problem..was muss ich einfügen oder ändern?
Data_nodes=textscan(fid,'%s%f%16f%16f%16f','headerlines',7,'delimiter',' ''/','MultipleDelimsAsone',1,'CollectOutput',1);

Data_text_bars=textscan(fid,'%s',6);
Data_bars=textscan(fid,'%s%f%*16f%16f%16f','headerlines',1,'delimiter',' ''/','MultipleDelimsAsone',1,'CollectOutput',1);
fclose=fid;
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 15.12.2011, 15:21     Titel:
  Antworten mit Zitat      
Hallo
Da hast einfach in deinem Textfile Fehler.
Da ist eine Zahl einfach nur 15 Zeichen lang.
Also keine homogenen Daten, deswegen kann an dieser Stelle algorithmisch wenig ausrichten.
Private Nachricht senden Benutzer-Profile anzeigen
 
spright
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.12.2011, 16:55     Titel:
  Antworten mit Zitat      
danke,denny! das is natürlich blöd, denn meine messdaten werden mir so gegeben...

also,so wie ich das sehe erkennt er ja die leerstellen,die da auftreten.könnte ich da vllt mit einer if-abfrage was erreichen...also,dass er wenn so ne leerstelle kommt er das format ändert?

is nur mal so ne idee...kp,wie man das programmieren würde...

oder hat einer ahnung wie ich die datei vllt schon im vorraus richtig formatieren könnte?
brauch auch nich alle nachkommastellen...es würden wohl auch 10 tun....

danke
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 15.12.2011, 17:10     Titel:
  Antworten mit Zitat      
Moin,

pragmatischer Ansatz: Lese die Zahlen als einen String ein, ersetze evtl. Leerzeichen durch "0" und dann kannst du den String in deine Werte zerlegen.

Ist sicherlich nicht der eleganteste Ansatz, aber ein Ansatz...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 15.12.2011, 23:47     Titel:
  Antworten mit Zitat      
Leerstellen zwischen der Zahlen wären von Vorteil, dann hätte deine Lösung ohne Probleme funktioniert
Private Nachricht senden Benutzer-Profile anzeigen
 
spright
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 12.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2011, 02:38     Titel:
  Antworten mit Zitat      
Also,hauptsache ich hab ne Möglichkeit die Daten einzulesen....deswegen schonmal Danke für eure antworten...

Als String einlesen würde ich doch genau so machen,wie ich es jetzt mache nur, dass ich eben als Format s angeben,oder?

Und,wie kann ich das machen,dass er die Leerstellen durch eine Null ersetzt?

Ich hoffe ich strapaziere eure Geduld nicht so sehr..bin Anfänger und knoble schon ne ganze Weile dran...
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 16.12.2011, 09:29     Titel:
  Antworten mit Zitat      
Moin,

schau mal in dieses Beispiel rein: http://www.gomatlab.de/mehrzeiligen.....ing-einfuegen-t21502.html

Gruß,
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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.