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

Problem beim Daten auslesen aus einer .fig Datei

 

Bobar
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 10.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.06.2019, 11:30     Titel: Problem beim Daten auslesen aus einer .fig Datei
  Antworten mit Zitat      
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!!!!

Code:
function readkoef_write_txt
clear all;
close all;
clc;

for i = 1:4 %Auswahl der Messung bzw. Fusion
   

    if i==1
         a = 'Datensatz_Fusion';
     else if i==2
             a = 'Referenzkopfwelle';
          else if 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');
                   
                    H         = findobj(figure, 'type','Matrix')
                    %x_data    = get(H, 'Column1')
                    save('figure.txt','figure.mat','-ascii')
                end
        end  
    end
end


[EDITED, Jan, Bitte Code-Umgenung verwenden - Danke!]

Zahn_1_L_FlaechigeAusw2.fig
 Beschreibung:

Download
 Dateiname:  Zahn_1_L_FlaechigeAusw2.fig
 Dateigröße:  15.54 KB
 Heruntergeladen:  266 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.06.2019, 00:26     Titel: Re: Problem beim Daten auslesen aus einer .fig Datei
  Antworten mit Zitat      
Hallo Bobar,

clear all 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 clear all 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:
Code:


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:
Code:
figH = openfig(fullfile(ImportOrt,  ...
        ['Zahn_', int2str(k), '_', c, '_FlaechigeAusw2.fig']));
tableH = findobj(fig, 'type', 'uitable');
Data = tableH.Data;

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.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Bobar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 10.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2019, 11:34     Titel:
  Antworten mit Zitat      
Hallo Jan,

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
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.