Die ITX-Datei soll gelesen und die Daten konvertiert werden. Leider tritt beim einlesen folgende Fehlermeldung auf:
Code:
>> read_ITX('2016033001.itx',1,0) Error using fread
Invalid file identifier. Usefopen to generate a valid file identifier.
Error in read_ITX (line62)
dummy=fread(fid,'int16=>double','ieee-le');
In anderen Beiträgen wird empfohlen fid zu prüfen, um zu wissen ob auf die Datei überhaupt zugegriffen werden kann. Mein fid liegt bei 3 (und nicht wie angenommen bei -1) und dürfte daher nicht das Problem sein?!
Ich würde mich sehr über Tipps und Tricks oder Lösungen freuen!!
ich würde in dem Fall auch fid = -1 erwarten.
Überprüfe aber doch trotzdem mal, ob die Datei, die an der Stelle einzulesen versucht wird, überhaupt existiert. Falls vorherige Dateien eingelesen werden:
Verfasst am: 27.04.2016, 13:12
Titel: Re: ITX-Data lesen und in Matlab-file konvertieren, Error!!
Hallo Faboston,
Ein paar Kommentare zum Code:
Code:
function read_ITX(ITX_filename,matfile,delfile)
ITX_name=ITX_filename; % Überflüssig?! Nenne die Variable doch gleich richtig
setnumber=ITX_name(1:end-4);
format('long'); % Das ändert nur den Output im CommandWindow
for a_loop=1:1:(length(LD)-15)/19; % A-Loop
GWK_data{1,a_loop} = {'Number'}; % Einfacher als CELLSTR
dummy = LD{(a_loop-1)*19+17,1)}; % {} einfacher als CELL2MAT
GWK_data{2,a_loop} = str2double(dummy(8:end));
Das Debugger ist viel einfacher, wenn immer nur ein Befehl pro Zeile verwendet wird. Dann funktioniert auch Matlab's JIT-Acceleration besser.
Ich habe so viele Codes gesehen, die an einem gescheiterten FOPEN straucheln, dass ich grundsätzlich rate, die Rückgabe immer zu testen und eine eindeutige Fehlermeldung auszugeben. Die Verwendung absoluter File-Namen mit Pfad ist ebenfalls sehr nützlich, denn z.B. ein Timer- oder GUI-Callback kann ja mal kurz das aktuelle Verzeichnis ändern. Wenn man dann relative File-Namen verwendet, stoppt das Programm, aber man hat keine Chance den Grund dafür heraus zu finden.
"9<ch_num<100" macht etwas anderes, als Du erwartest: Matlab rechnet von links nach rechts. Zuerst wird "9<ch_num" ausgewertet. Das ist entweder 0 oder 1. Für beide Werte gilt aber "1<100" und "0<100". Du meinst:
Abver mit dem
sprintf
Befehl kann man das komplizierte Anfügen von Nullen ja sowieso elegant lösen.
Gruß, Jan
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.