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

Inhalt von .txt in einen Vektor schreiben in Scilab

 

grille84
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 22.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2014, 15:35     Titel: Inhalt von .txt in einen Vektor schreiben in Scilab
  Antworten mit Zitat      
Guten Abend,

ich habe eine Frage bezüglich des Einbindens von txt-Datein in Scilab. Ich bin noch neu auf dem Gebiet und bitte daher um Nachsicht.
Wie oben schon beschrieben möchte ich eine .txt Datei einlesen, wobei der Inhalt der Datei nur mit Gleitkommazahlen gefüllt ist. Jeder Wert erhält eine eigene Zahl. Also wie folgt:

Zahl1
Zahl2
Zahl3

Wenn ich nun den Inhalt der .txt in einen Array schreiben möchte, habe ich folgenden Code verwendet:
....
Code:

fid = mopen('Datentest.txt', 'r');
  if (fid == -1)
    error("cannot open file for reading");
  end
i = 0;
n = 0;
while ~meof(fid) do
   i = i + 1;
end
n = i;
i = 0;
double Messdaten[n];
while ~meof(fid) do
  Messdaten[i] =  mfscanf(1, fid(i), "%c");
   i = i + 1;
end
mclose(fid);
disp(Messdaten);
 


Meine Idee ist folgende. Ich öffne die .txt-Datei. Lasse eine Schleife so lange laufen, bis ich das Dateiende erreicht habe. Nutze den Laufindex für die Arraygröße. Schreibe anschließend die den Inhalt der Datei in en Array.
Anschließend schließe ich die Datei wieder und möchte mir den Array auf dem Monitor ansehen. Soviel zur Theorie:

Wenn ich den Code laufen lasse, ergibt sich lediglich auf der Konsole:
-->exec('C:\Dokumente und Einstellungen\grille\Eigene Dateien\lesen.sce', -1)
Warnung: Datei 'Datentest.txt' bereits in Scilab geöffnet.
Außerdem scheint das Programm sich aufzuhängen, weil er bis in die Ewigkeit lädt. Der Inhalt der Testdatei beinhaltet die Zahlen 1 bis 9.

Bei einem anderen Beispiel habe ich versucht das Problem mit fscanMat() zu lösen. Hier kann ich mit der funktion disp() auch den Inhalt meiner txt Datei sehen. Jedoch kann ich nicht den Inhalt der txt-Datei in einen Array bzw. Vektor schreiben.

Code:

read_matrix = fscanfMat('Daten.txt')
a=length(read_matrix);
b = size(read_matrix);
disp(a);
disp(b);

Daten = read_matrix;
i = 2;
mprintf('Datenwert an der Stelle %i ist %f : ',i,Daten[i]);

 


Führe ich den Code aus, kommt eine Fehlermeldung, dass er auf das Schließen einer Klammer in der mprintf() Zeile wartet. Ich sehen hier aber keine fehlende Klammer
Vielen Dank im Voraus.

Christian
Private Nachricht senden Benutzer-Profile anzeigen


MarcoG
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 11.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2014, 13:50     Titel:
  Antworten mit Zitat      
Hallo Christian,

ich habe zwar noch nicht mit fscanfMat gearbeitet, was aber immer gut funktioniert ist:
Code:

fid = file('open',Name,'old');
       Tread=read(fid,-1,m);
file('close',fid);
 

Der Vorteil ist, dass du die Länge nicht kennen musst, außer du deklarierst den Vektor in den gelesen wird vorher. m ist die Anzahl der Spalten, bei dir m=1. Du kannst damit auch einen Header überspringen. Hier werden z.B. 4 Zeilen übersprungen und in A geschrieben, egal was da drin steht.
Code:

fid = file('open',Name,'old');
       A = read(fid,4,1,'(A)');
       B = read(fid,1,1);
file('close',fid);
 


Alternativ nehme ich auch gerne
Code:
. Der Befehl ist kürzer und dennoch sehr flexibel.

Gruß
Marco
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.