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

Matlab - Strukturen - einlesen - wie umsetzen?

 

Zenker
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2011, 12:36     Titel: Matlab - Strukturen - einlesen - wie umsetzen?
  Antworten mit Zitat      
Guten Tag,

ich will mit Matlab folgendes realisieren:

1.) Ein Textfile einlesen, wobei:
alle # Zeilen Kommentare darstellen

2.) In dem Textfile sind fangen Dateinamen immer mit "M" an, wobei x und y Koordinaten in einer Zeile durch Leerzeichen getrennt sind, z.B.

# Image:
M02_BAB00046_00000533_Links_7.png
# Zoom index: 4
#
# User: busalt
# Color: 0
# left right top bottom
964 1003 533 572
#
# User: busalt
# Color: 0
# left right top bottom
998 1037 537 576

Nun will ich die irgendwie in Matlab verarbeiten, dazu müssen sie Eingelesen werden.

Soweit bin ich:

Code:

temp = load('Postive_mark.txt');

tline = fgetl(fid);
while(ischar(tline))

if(tline(1) == '#')  
    continue;
else    
    if(tline(1) == 'M')        
          % hier haben wir einen Dateinamen  
    else
        % hier haben wir eine Koordinate
    end
end

tline = fgetl(fid);
end
 




Nun ist mien Ziel z.b. eine Struktur zu bekommen in der einmal der Dateiname und einmal alle x y Koordinaten drinnenstehen (können mehrere sein)

Wie geht das?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2011, 12:56     Titel:
  Antworten mit Zitat      
Hallo,

schau dir doch TEXTSCAN an.
Mit der Option 'CommentStyle' auf '#' werden automatisch alle der augenscheinlich nicht benötigten Zeilen ignoriert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zenker
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2011, 15:00     Titel:
  Antworten mit Zitat      
Danke,

aber die # Zeilen überspringe ich ja schon so... frage ist nun, wie ich das eingelesene in eine Matlab /Struktur?/ einspeichern kann?

Gruß,

Zenker
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.11.2011, 15:14     Titel:
  Antworten mit Zitat      
Hallo,

dein Code erscheint mir ein wenig ungeordnet und unnötig kompliziert.
Mit zwei TEXTSCAN-Befehlen lässt sich das einfach umsetzen, siehe Beispiele in der Dokumnetation. Das Abspeichern in Variablen passiert dann ganz automatisch.

Grüße,
Harald
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: 03.11.2011, 16:48     Titel:
  Antworten mit Zitat      
Hall Zenker,

Du kannst die eingelesenen Zeilen mit SSCANF in Zahlen umwandeln. Kannst Du ein Beispiel für die gewünschte "Struktur" geben? Das kann ein CELL Array sein, ein STRUCT oder STRUCT-Array, etc. Ohne zu wissen, was Du genau suchst, ist es schwierig einen Ratschlag zu geben.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2011, 10:14     Titel:
  Antworten mit Zitat      
Servus,

also die Textdatei ist so aufgebaut:

Zitat:
# Image:
M02_BAB00046_00000533_Right_0.png
# Zoom index: 3
#
#
#
# Image:
M02_BAB00046_00000533_Links_1.png
# Zoom index: 4
#
# User: busalt
# Color: 0
# left right top bottom
850 889 122 161
#
# User: busalt
# Color: 0
# left right top bottom
851 890 83 122
#
# User: busalt
# Color: 0
# left right top bottom
816 855 99 138
#
# User: busalt
# Color: 0
# left right top bottom
770 809 36 75
#
# User: busalt
# Color: 0
# left right top bottom
790 829 72 111
#
#
#
# Image:
M02_BAB00046_00000533_Right_1.png
# Zoom index: 4
#
# User: busalt
# Color: 0
# left right top bottom
556 595 173 212
#
#
#
# Image:
M02_BAB00046_00000533_Links_2.png
# Zoom index: 3
#
#
#
# Image:
M02_BAB00046_00000533_Right_2.png
# Zoom index: 3


oder - gekürzt:

Code:

M02_BAB00046_00000533_Right_0.png
M02_BAB00046_00000533_Links_1.png
850 889 122 161
851 890 83 122
816 855 99 138
770 809 36 75
790 829 72 111
M02_BAB00046_00000533_Right_1.png
556 595 173 212
M02_BAB00046_00000533_Links_2.png
M02_BAB00046_00000533_Right_2.png
 

´
(Kommentarzeilen entfernt)

die Zeilen mit Zahlen brauche ich um die Koordinaten später ins Bild einztragen. Also muss zu jedem Bild sämtliche dazugehörigen Koordinaten irgendwie erfassen...

ich hoffe, es ist klar was ich brauche?!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.11.2011, 10:17     Titel:
  Antworten mit Zitat      
Hallo,

die Struktur deiner Datei kennen wir jetzt, Jans Frage war jedoch, wie die Informationen in MATLAB bzw. im Workspace strukturiert werden sollen.
Ich denke nach wie vor, dass TEXTSCAN hier vielversprechend wäre.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Zenker
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2011, 14:46     Titel:
  Antworten mit Zitat      
Servus,

sorry für die späte Antwort: das ist mir eigentlich relativ egal, hauptsache ich kann drauf zugreifen...
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: 08.11.2011, 21:30     Titel:
  Antworten mit Zitat      
Hallo Zenker,

Auch wenn es Dir egal ist, bist Du der einzige, der eine sinnvolle Struktur festlegen kann und sollte.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 09.11.2011, 12:49, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Zenker
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2011, 22:03     Titel:
  Antworten mit Zitat      
Also was mir so vorschwebt ist eine Art Struktur, in der man den Dateinamen und bis zu 10 x_oben x_unten y_oben y_unten Werte einspeichern kann. Diese sollten standardmäßig mit Werten wie z.b. 0 oder -1 gefüllt werden und dann abhängig von der Anzahl an real vorhandenen Werten initialisiert werden, ich kenn das aus c: http://home.htw-berlin.de/~junghans/cref/SYNTAX/struct.html

Dan wäre die Idee, eine Struktur zu definieren (z.B. Namens Bildervierecke) und zuerst die Anzahl an Dateinamen einzulesen, danach ein Array von "Bildvierecke"n (Größe = Anzahl an Dateinamen) zu erstellen und dann Dateinamen und Vierecke einzulesen...

hab mir hierzu http://www.mathworks.de/help/techdoc/ref/struct.html durchgelesen, aber noch nicht ganz verstanden, wie ich es umsetzen könnte.. Sad

Danke nochmal an alle
Private Nachricht senden Benutzer-Profile anzeigen
 
Zenker
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 03.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2011, 20:51     Titel:
  Antworten mit Zitat      
Wollte nochmal ganz vorsichtig um Hilfe bitten.... Danke schonmal vorab
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.11.2011, 21:37     Titel:
  Antworten mit Zitat      
Hallo,

Aussagen wie "ich habe nicht ganz verstanden, wie ich das umsetzen könnte" sind nicht sehr hilfreich, da wir dann nicht ganz wissen, wie wir dir helfen sollen.
Ich finde es schade, dass du meinen ersten Vorschlag mit textscan offensichtlich nie wirklich ausprobiert hast. Damit geht es nämlich recht einfach:
Code:
fid = fopen('mdata.txt');
I = 1;
while ~feof(fid)
    fname = textscan(fid, '%s', 1, 'CommentStyle', '#');
    s(I).dateiname = fname;
    s(I).daten = cell2mat(textscan(fid, '%f%f%f%f', 'CommentStyle', '#'));
    I = I + 1;
end
fclose(fid);

Da ich deine wenigen Aussagen hinsichtlich der gewünschten Anordnung der Daten nicht verstehe, habe ich sie jetzt einfach so angeordnet, wie es mir intuitiv sinnvoll erschien.

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