Verfasst am: 10.06.2019, 10:30
Titel: Problem beim Daten auslesen aus einer .fig Datei
Hallo Leute,
Ich bin dabei ein auswerte Tool zu schreiben, welches Parameter von Paraboloiden aus einer .fig-Datei ausliest. Die Datei wurde von einem anderen Tool erstellt und hier habe ich leider keine Möglichkeit die Ausgabe art zu ändern.
Mein Script greift auf die verschiedenen Unterordner zu in denen die Dateien gespeichert sind.-Klappt auch ohne Probleme! Nur beim einlesen der Daten aus der Figure weis ich nicht mehr weiter. Habe schon versucht sie mit saveas einfach .txt abzuspeichern oder über findobj darauf zuzugreifen.
Hier mal der Code. Eine exemplarische figure hab ich auch angehängt (Hier müsste das Problem liegen).
Wäre echt Klasse wenn mir da einer helfen kann!!!!!
Vielen Dank euch schon mal!!!!
if i==1
a = 'Datensatz_Fusion';
elseif i==2
a = 'Referenzkopfwelle';
elseif i==3
a = 'Topo_Messung5';
else
a = 'USH_Fusion';
end end end
for j = 1:2 %Auswahl links oder rechts Flanke
if j == 1
b = 'links';
c = 'L';
else
b = 'rechts';
c = 'R';
end
for k = 1:13 %öffnen der einzelnen Ordner und Auslesen der Figure`s und Ausgabe als .txt
d="\Paraboloidkoeffizienten\Zahn";
ImportOrt = a +d+string(k)+'_'+b;
figure = openfig(ImportOrt+'\Zahn_'+string(k)+'_'+c+'_FlaechigeAusw2.fig');
Verfasst am: 10.06.2019, 23:26
Titel: Re: Problem beim Daten auslesen aus einer .fig Datei
Hallo Bobar,
clearall
löscht alle geladenen Funktionen aus dem RAM und das Nachladen verschwendet eine Menge Zeit. Zusätzlich werden alle Variablen aus dem aktuellen WorkSpace. Am Anfang einer Funktion existieren aber noch keine Variablen. Deshalb ist das
clearall
hier reine Zeitverschwendung.
Code zu verwenden, der in irgendwelchen anderen Situationen mal nützlich war, aber keine Funktion mehr hat, nennt man "Cargo-Cult-Programming". Es ist eine gute Idee, den ganzen "brutalen CLEAR Header" wegzulassen:
Das Auslesen von Daten aus eine .FIG-Datei ist sehr indirekt und umständlich. Der korrekte und effiziente Weg wäre, die Daten in einem passenden Format zu speichern. Mit Notlösungen herum zu frickeln für auf lange Sicht im Allgemeinen zu unlösbarem Gewurstel. Aber wenn du das nicht ändern kannst, behalt es im Hinterkopf und exportiere selbst keine Daten in FIG-Files.
Zitat:
Habe schon versucht sie mit saveas einfach .txt abzuspeichern oder über findobj darauf zuzugreifen.
Ich kann mir nicht vorstellen, was das bedeutet. Ein FIG-File enthält eine Figure und das Laden erstellt bereits eine Kopie als neues Fenster. Wie könnte man das denn als Text-File abspeichern?!
Code:
function readkoef_write_txt
VarPool = {'Datensatz_Fusion', 'Referenzkopfwelle', 'Topo_Messung5', 'USH_Fusion'};
SidePool = {'links', 'rechts'};
for i = 1:4 %Auswahl der Messung bzw. Fusion
a = VarPool{i};
for j = 1:2 %Auswahl links oder rechts Flanke
b = SidePool{j};
c = upper(b(1));
for k = 1:13 %öffnen der einzelnen Ordner und Auslesen der Figure`s und Ausgabe als .txt
d="\Paraboloidkoeffizienten\Zahn";
ImportOrt = [a, d, int2str(k), '_', b];
% !!! NICHT "figure" !!! % "figure" ist eine Matlab Funktion. Den Namen als lokale Variable zu verwenden % erzeugt heftige Verwirrung!
figH = openfig(fullfile(ImportOrt, ... ['Zahn_', int2str(k), '_', c, '_FlaechigeAusw2.fig']));
H = findobj(fig, 'type','Matrix')% Fast, nicht 'Matrix', sondern 'uitable'
%x_data = get(H, 'Column1') ???
save('figure.txt','figure.mat','-ascii') ???
end end end
Du hast nicht erwähnt, was Du genau auslesen möchtest. Da sich im FIG fFile aber nur ein UITABLE Objekt befindet, rate ich mal, dass du die Daten daraus bekommen möchtest:
FINDOBJ sucht nach Objekten, hier dem 'uitable' Objekt.
Ich habe den Code so geändert, dass konsistent immer CHAR-Vektoren verwendet werden. Strings mit + aneinander zu hängen ist zwar auch hübsch, aber der Mix aus CHAR Vektoren und Strings ist verwirrend.
Ich würde empfehlen, Variablennamen zu verwenden, die erklären, was sie beinhalten. "Side" statt "b" wäre eine gute Idee, usw.
Erstmal vielen vielen Dank für die schnelle Hilfe und weiter führenden Erklärungen. Jetzt sind auch die Variablennamen nochmal überdacht und geändert.
Habe alles implementiert und läuft problemlos!!!!!!
Nochmal Danke!
Grüße Bobar
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.