|
|
Matlab mehrere Matrizen aus einer Textdatei laden? |
|
RikonVan |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 27.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.06.2013, 12:30
Titel: Matlab mehrere Matrizen aus einer Textdatei laden?
|
 |
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
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.06.2013, 13:27
Titel: Re: Matlab mehrere Matrizen aus einer Textdatei laden?
|
 |
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
|
|
|
RikonVan |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 27.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.06.2013, 14:27
Titel: Antw
|
 |
Entschuldige die Verwirrung.
Zur deiner 2. Frage:
A, B und C sollen Matrizen sein, keine Variablen.
A soll am Ende so aussehen:
B so:
und C so:
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:
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
Könnte ich daraus 2 Matrizen machen durch ein skript?
Ergebnis:
Wenn es so nicht geht, dann evtl. über dlmread oder ähnliche Befehle? Ich finde leider nicht weiter.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 05.06.2013, 16:10
Titel: Re: Antw
|
 |
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
|
|
|
RikonVan |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 27.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 11:17
Titel: Antwort
|
 |
|
 |
|
Hallo Jan,
A B und C sollen Matrizen sein als Variable gespeichert(so jetzt ists richtig .
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
|
|
|
Kascho |

Forum-Century
|
 |
Beiträge: 195
|
 |
|
 |
Anmeldedatum: 24.03.10
|
 |
|
 |
Wohnort: Jena
|
 |
|
 |
Version: R2008b ... :(
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 12:10
Titel:
|
 |
Hi RikonVan,
hast du denn schon etwas Code?
Bin jetz auch nich so der Pro, aber ich würde erstma die Textdatei einlesen:
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
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 12:32
Titel: Re: Antwort
|
 |
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
|
|
|
RikonVan |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 27.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 12:53
Titel: Antwwort
|
 |
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
|
|
|
RikonVan |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 27.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 14:07
Titel: Code
|
 |
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
|
|
|
RikonVan |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 27.05.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 14:26
Titel: Aufgabe
|
 |
Ich glaube ich gebe den Thread hier auf und damit das Projekt, tut mir leid und danke für euer Interesse
--Closed
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 06.06.2013, 15:22
Titel:
|
 |
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
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|