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 mehrere Matrizen aus einer Textdatei laden?

 

RikonVan
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2013, 12:30     Titel: Matlab mehrere Matrizen aus einer Textdatei laden?
  Antworten mit Zitat      
Hallo,
BsP.: ich habe eine Textdatei(Matrizen.txt) mit 3 Matrizen(s.u.). [In Wirklichket sind es viele Textdateien und mehr Zeilen, aber egal.]
Kann ich eine Matrix für jede Matrix einlesen?
Wenn ich mache A=load('matrizen.txt') dann beinhaltet A immer alle Matrizen auf einmal.

Ich hätte gerne etwas wie:
A=...
B=...
C=...

Darf gerne Komplizierter Werden!
1000 Dank.

Aufgebaut ist die Textdatei in etwa wie folgt:

% Mask 1.1
147 100 45 2
146 34 23 102
147 23 24 124

% Mask 2.1
947 100 45 2
846 34 23 102
747 23 24 124

% Mask 3.1
447 10 34 2
346 89 16 102
247 29 11 154
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: 05.06.2013, 13:27     Titel: Re: Matlab mehrere Matrizen aus einer Textdatei laden?
  Antworten mit Zitat      
Hallo RikonVan,

Was ist nun genau die Frage?
Wie könnte "A", "B", ... für mehr als 26 Variablen weitergeführt werden?
Wieso lassen sich diese Text-Datein per LOAD laden und was bedeutet:
Zitat:
Kann ich eine Matrix für jede Matrix einlesen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2013, 14:27     Titel: Antw
  Antworten mit Zitat      
Entschuldige die Verwirrung.

Zur deiner 2. Frage:

A, B und C sollen Matrizen sein, keine Variablen.
A soll am Ende so aussehen:
Code:
A = [147 100 45 2;
146 34 23 102;
147 23 24 124]

B so:
Code:
B = [947 100 45 2;
846 34 23 102;
747 23 24 124]

und C so:
Code:
C = [447 10 34 2;
346 89 16 102;
247 29 11 154]


Zu deiner 1. Frage:
Wenn man in den MATLAB Ordner eine .txt Datei mit Werten in Tabellenform einfügt, kann man tasächlich über den load Befehl diese Daten direkt in eine Matrix überführen, so wie A=load('Tabelle1.txt'), wobei Tabelle1 aussieht wie:
Code:
447 10 34 2
346 89 16 102
247 29 11 154
447 10 34 2
346 89 16 102
247 29 11 154

dann wäre A = [447 10 34 2;
346 89 16 102;
247 29 11 154;
447 10 34 2;
346 89 16 102;
247 29 11 154]

Meine Frage: Wäre die Tabelle getrennt, z.b. durch einen Kommentar oder durch Absätze oder sonstige Zeichen, z.b.:
Tabelle1.txt
Code:
[code]
%Matrix1

447 10 34 2
346 89 16 102
247 29 11 154
447 10 34 2
%Matrix2

346 89 16 102
247 29 11 154 [/code]


Könnte ich daraus 2 Matrizen machen durch ein skript?
Ergebnis:
Code:
A = [447 10 34 2;
346 89 16 102;
247 29 11 154;
447 10 34 2]
B = [346 89 16 102;
247 29 11 154]


Wenn es so nicht geht, dann evtl. über dlmread oder ähnliche Befehle? Ich finde leider nicht weiter.
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: 05.06.2013, 16:10     Titel: Re: Antw
  Antworten mit Zitat      
Hallo RikonVan,

Zitat:
A, B und C sollen Matrizen sein, keine Variablen.

Jetzt bin ich vollends verwirrt. Matrizen werden doch als Variablen gespeichert.

Ich verstehe den Kern der Frage immer noch nicht. Möchtest Du wissen, wie man mehrere Matrizen in einem File speichern kann? Das ging schmerzfrei und effizient mit SAVE, wenn Du das binäre MAT-Format nutzt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 11:17     Titel: Antwort
  Antworten mit Zitat      
Hallo Jan,
A B und C sollen Matrizen sein als Variable gespeichert(so jetzt ists richtig Smile.

Nein, leider will ich nicht wissen, wie man mehrere Matrizen speichert, sondern exakt umgekehrt.

Ich möchte aus einer Datei mit mehreren Matrizen eben diese Matrizen laden.
Hat die Datei 3 Matrizen, so möchte ich am Ende 3 Matrizen herausbekommen.
Nennen wir die Datei 3matrizen.txt und laden diese in Matlab, so möchte ich 3 Matrizen, A B und C, welche die 3 Matrizen aus der Datei widerspiegeln.

Soviel zum Kern meiner Frage.
Speziell wird das Problem, weil ich eine Auswertung mit etwa 1000 Zeilen habe wobei jede Matrix noch nicht definiert ist. Noch nicht definiert, damit meine ich, dass in der Datei nicht bereits abgespeichert ist, dass zum Beispiel die Zeilen 1-300 die Matrix A ergeben sollen, die Zeilen 301-700 die Matrix B und die Zeilen 701-1000 die Matrix C. Vielmehr befindet sich die Datei in einem Format das folgendermaßen aussieht:
3matrizen.txt
%Matrix1.1
1 20 30 42
5 67 73 85
9 10 11 12
%Matrix1.2
13 64 15 16
17 98 69 20
%Matrix 1.3
21 22 53 24
25 24 25 25

Wie man sieht, sind die Matrizen durch Kommentare abgegrenzt.
Gibt es eine Möglichkeit, aus dieser Datei(3matrizen.txt) folgende 3 Matrizen A B und C auszulesen:
A=[1 20 30 42
5 67 73 85
9 10 11 12]
B=[13 64 15 16
17 98 69 20]
C=[21 22 53 24
25 24 25 25]

Also: Die Matrix A, welche ich auslesen will, entspricht %Matrix1.1,
Die Matrix B entspricht %Matrix1.2 und die Matrix C entspricht %Matrix1.3.
Falls unklar, bitte weiter Fragen, ich weiß ja nicht, was Du nicht verstehst, weil ich die Frage besser im Kopf habe Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 06.06.2013, 12:10     Titel:
  Antworten mit Zitat      
Hi RikonVan,

hast du denn schon etwas Code?
Bin jetz auch nich so der Pro, aber ich würde erstma die Textdatei einlesen:
Code:


fid=fopen('matrix.txt');
k=1;
while 1
z=fgetl(fid);
if z==-1, break, end
daten(k).zeile=z;
k=k+1;
end


nun hast du in einem strukt alle zeilen der Textdatei drinne stehen. Anschließend kannst du mit strfind das Teil nach deinem string durchsuchen (ich denke mal "matrix", wenn sich das nicht ändert)

hoffe das hat weiter geholfen

Gruß, Kascho
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: 06.06.2013, 12:32     Titel: Re: Antwort
  Antworten mit Zitat      
Hallo RikonVan,

Sorry für den nicht-konstruktiven Kommentar:
Das ist aber ein ausgesprochen häßliches Datei-Format. Es gibt so viele praktischere Formate, dass Du den Ersteller der Files mal die Ohren lang ziehen solltest.
Statt eine komplizierte Methode zum Einlesen zu entwickeln, wäre es so viel einfacher eine einfache Methode zum Schreiben zu erstellen, die ein ebenso einfaches Einlesen erlaubt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 12:53     Titel: Antwwort
  Antworten mit Zitat      
Zunächst an Jan:
Richtig, das Problem ist das Programm, glaube ich auch. Es ist jedoch von einer Einzelperson für die Klinik geschrieben worden und deswegen nicht besonders ausgereift. Ich werde dennoch kontakt aufnehmen und mich beschweren Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 14:07     Titel: Code
  Antworten mit Zitat      
Bis jetzt habe ich einen Code geschrieben, der die Stellen findet, an welchen Matrix steht, und eine [1] zurückgibt, an allen anderen stellen ein leeres array [].
wenn mir strfind die zeilen dazu ausspucken würde, wäre es allerdings um einiges praktischer. Weiter bin ich noch nicht...

Aber danke Kascho Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
RikonVan
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 14:26     Titel: Aufgabe
  Antworten mit Zitat      
Ich glaube ich gebe den Thread hier auf und damit das Projekt, tut mir leid und danke für euer Interesse Wink

--Closed
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.06.2013, 15:22     Titel:
  Antworten mit Zitat      
Hallo

ich würde in der Kombination FGETL, FTELL, FSEEK und TEXTSCAN nutzen
Aber das funktioniert nur wenn die Matrizen von einander getrennt sind.

zuerst mit FGETL die Stelle suchen wo Kommentare stehen
mit FTELL die Position merken
mit FSEEK zu den Positionen springen und mit TEXTSCAN dann Matrizen auslesen
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.