Hallo,
ich glaube das würde so nicht gehen
da du z.B. in der zweiten Zeile 3 Zahlen hast die mit 'Delimiter' ' ' getrennt sind
in der dritten 4 Zahlen
und in der vierten 5 Zahlen
Bei textscan sagst du aber es sollen nur vier Zahlen gesucht werden.
danke für die schnelle Antwort. Also funktioniert das nur mit dem Befehl "strtok" oder vielleicht doch textread? Aber ich muss dazu anmerken, dass ich ca. 600 von diesen Files habe und das ganze automatisiert durchlaufen möchte.
ich hab mir deine test.txt-Datei noch mal angeschaut und festgestellt, dass dort vor der ersten und zweiten Zahl 5 Leerzeichen stehen, ich würde diese zuerst entfernen, z.B mit
ich habe das mit dem Befehl strrep irgendwie nicht so hinbekommen. Bin wahscheinlich zu blöd dafür. ^^
Aber ich habe eine bereits schon an eine andere Lösung gearbeitet, die hoffentlich (zumindest bei einer File) auch nicht so viel mehr Rechenzeit einnimmt.
Code:
% laden der File [FileName,PathName] = uigetfile('*.snx','Wähle Files zum Einlesen der Daten','MultiSelect','on');
% Prüft ob eine File ausgewählt wurde und gibt eine Fehlermeldung aus ifiscell(FileName) == 1
AnzFile = length(FileName);
FileName = sort(FileName);
elseif FileName == 0 warning('off','MATLAB:dispatcher:InexactMatch');
MsgBox('Es wurde keine File ausgewählt!','Warning','warn');
return else
AnzFile = 1;
end
%% File einlesen und Matrix abspeichern for j = 1:AnzFile
% Öffne File ifiscell(FileName) == 1
fid = fopen(FileName{j},'r');
% Variablen Name
VarName = ['Kova_' FileName{j}(1:11)];
else
fid = fopen(FileName,'r');
% Variablen Name
VarName = ['Kova_' FileName(1:11)];
end
%% Durchläuft die Textfile bis zum Ende % Erzeugen einer Prüfvariable und Laufvariable
a = 0;
lauf = 1;
% Textfile durchlaufen und Werte speichern while ~feof(fid)
strLine = fgetl(fid);
ifstrfind(strLine,'-SOLUTION/MATRIX_ESTIMATE') > 0 break end
% Läuft bis zur Kovarianzmatrix durch ifstrfind(strLine,'+SOLUTION/MATRIX_ESTIMATE') > 0
strLine = fgetl(fid);
a = 1;
elseif a == 1 % Werte für die Matrix aus der File [strIdx1,strLine] = strtok(strLine,' ');
[strIdx2,strLine] = strtok(strLine,' ');
[strWert1,strLine] = strtok(strLine,' ');
[strWert2,strLine] = strtok(strLine,' ');
[strWert3,strLine] = strtok(strLine,' ');
Das sind zwar ein paar Zeilen mehr. Aber das Programm macht, was es soll.
Aber die nächste Frage folgt schon direkt. Aber dafür werde ich erst mal das Forum durchforsten und evtl. ein neues Thema eröffnen.
Wünsche eine schönen Abend
Viele Grüße
Qbella
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
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.