Verfasst am: 01.12.2011, 22:01
Titel: Daten einlesen im GUI
Hallo Leute,
habe ein Problem beim Laden der Daten aus einer Textdatei (Datei im Anhang). Ich will mir die 2. die 3. und die 5. Spalte aus der Datei laden und damit ein 3D Plot zeichnen. Das Problem ist, dass die Daten in der Spalte 5 in exponentialform liegen, z.B. 4.4322585033180566e-08. Ich habe mit str2double und str2num versucht eine Gleitkommazahl zu bekommen ohne Erfolg. Eigentlich brauche ich für den Plot, für meshgrid zahlen die gleich lang sind. Wie kann ich die Spalte 5 umwandeln und runden so dass aus 4.4322585033180566e-08 Meter z.B. 44.432 nano Meter wird. Und die Werte aus den ersten 2 Spalten auch auf 3 Stellen nach der Komma abrunde?
Danke im Voraus!
Code:
% Das ist mein Programm [filename,pathname]=uigetfile('*.txt','Select the measurement data file');
name=[pathname filename];
handles.results=importdata(name,'\t',1);
handles.data=handles.results.data;
guidata(hObject, handles);
Verfasst am: 01.12.2011, 23:38
Titel: Re: Daten einlesen im GUI
Hallo Prikindel,
Welches Problem hast Du denn genau beim Laden der Files? Eigentlich werden die Zahlen in Exponential-Form ohne Probleme gelesen. Und wenn sie als Strings vorliegen, kann auch STR2DOUBLE und SSCANF damit umgehen.
Bitte zeige also, was Du genau versucht hast und welche Fehler dabei auftraten.
Wieso benötigt MESHGRID Zahlen, die gleich lang sind? Und was genau ist die Länge einer Zahl? Bei z.B. 0.0080000000000004 ist das nicht leicht zu definieren.
Um Nanometer zu bekommen, musst Du nur mit 1e9 multiplizieren. Runden auf drei Nachkommastellen kannst Du ungefähr mit:
Aber wie gesagt: Das ist nur ungefähr gerundet: Es lassen sich nicht alle realen Zahlen als Binärzahl darstellen. Als Konsequenz wird es mit jedem Verfahren zur Rundung immer Werte wie 0.8040000000000001 geben.
Damit wird es schon klarer: Das Problem liegt nicht bei den Zahlen oder beim Einlesen, sondern die Dimensionen passen nicht zu den befehlen zum Zeichnen. "Length" bedeutet also Anzahl der Elemente des Vektors. Mit Rundung hat dies nichts zu tun.
Für ein Gitternetz müssen die Anzahl der X- und Y-Werte zu der Anzahl der Z-Werte in der jeweiligen Richtung passen. Das machen sie zur Zeit in Deinem Code nicht. Welche Dimensionen haben sie denn? (Siehe "help size").
leider nicht, ich habe schon aus anderen Textdateien Graphen mit diesem Code geplottet. Da war Z auch nur eine Spalte aus der Textdatei, eine 1xn Matrix halt, oder verstehe ich das jetzt falsch?
Das Problem ist gelöst, musste die Schrittweite für meshgrid anpassen, danke noch mal für die Rückmeldungen!
Einstellungen und Berechtigungen
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
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.