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

fopen(fullfile) funktioniert nicht auf Mac

 

Ronja

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2017, 20:32     Titel: fopen(fullfile) funktioniert nicht auf Mac
  Antworten mit Zitat      
Hallo zusammen,

ich versuche derzeit Textfiles in mat-files auf meinem Mac zu übertragen, aber es geht nicht. Auf einem Windows-Rechner lief es.

Ich bekomme folgende Fehlermeldung:

Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in LK_AppleGame_TestPathIntegrationModel_RS_130617 (line 241)
tmp_data = textscan(fileID, '%s %s %s %s %s %s %s %d %d %d %s %s %s %s %s %s %d %d', 'HeaderLines',
1);

verwende ich dann "fopen" ist der filename falsch.

>> tmp_data = fopen(fileID, '%s %s %s %s %s %s %s %d %d %d %s %s %s %s %s %s %d %d', 'HeaderLines', 1)
Error using fopen
Invalid filename.
>>

Also schaue ich da nach:

>> fileID
fileID =
-1

die Berechnung der fileID soll eigentlich über diesen Code laufen:
>> fileID = fopen(fullfile(beh_path_spec, actual_file))


Also schau ich mir einzeln die Komponenten der fileID an:

>> beh_path_spec
beh_path_spec =
/Users/ronjaschutte/Documents/MATLAB/Daten MA/AppleGameAllSubjects310517/B061

>> actual_file
actual_file =
061_21_3_2017_10_13_35

>> fullfile(beh_path_spec, actual_file)
ans =
/Users/ronjaschutte/Documents/MATLAB/Daten MA/AppleGameAllSubjects310517/B061/061_21_3_2017_10_13_35

Er kann also bis dahin alles finden, soweit kein Problem zu erkennen. Also führe ich den ganzen Befehl durch:

>> fopen(fullfile(beh_path_spec, actual_file))
ans =
-1

Also scheint hier das Problem zu liegen, er kann die fullfile augenscheinlich mit fopen nicht öffnen. Was kann ich machen, damit er das tut?

Vielen Dank schon mal für eure Hilfe
Ronja


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.06.2017, 21:54     Titel:
  Antworten mit Zitat      
Hallo,

hat die Datei denn keine Endung?
Hast du mal versucht, den vollen Namen direkt in fopen reinzuschreiben?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ronja

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2017, 22:23     Titel:
  Antworten mit Zitat      
Hi,

Also so (siehe angehängte Datei) ist das bei mir abgespeichert. Die Datei wurde auf einem Windows-Rechner geschrieben und gespeichert, ich hab sie nur via Stick von dem einen zum anderen Rechner geschoben.
Ja, das habe ich auch mal probiert hat aber auch nicht geklappt.

Ich hatte jetzt schon noch folgende Idee: mein Ordner heißt ja B061 und das file 061_
habe nun den Ordner auch nur 061 genannt, damit da keinerlei Unterschiede sind. Nun bekomme schon einen Schritt früher eine Fehlermeldung:

Subject: 061
Data not previously saved as mat-files. Loading...
Index exceeds matrix dimensions.
Error in LK_AppleGame_TestPathIntegrationModel_RS_130617 (line 233)
if ~isempty(regexp(ls_files(n, 1:3), subjects{sub, 1}(2:4), 'once'))

Viele Grüße und Danke
Ronja

Bildschirmfoto 2017-06-14 um 13.59.38.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2017-06-14 um 13.59.38.png
 Dateigröße:  46.74 KB
 Heruntergeladen:  294 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.06.2017, 22:36     Titel:
  Antworten mit Zitat      
Hallo,

hat die Datei wirklich keine Endung? Wird sie nicht evtl. nur nicht angezeigt? Siehe z.B. https://www.maceinsteiger.de/how-to/dateiendungen-anzeigen/

Die neue Fehlermeldung sieht sehr merkwürdig aus. Welche Befehle verursachen sie denn? Vor allem würde ich es nicht als Fortschritt sehen, schon früher eine Fehlermeldung zu bekommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2017, 01:01     Titel:
  Antworten mit Zitat      
Dürfen Dateinamen vorne mit Zahlen sein? Ich dachte, das wäre in Matlab verboten? Oder gilt das nur für Skripte? Evtl. hilft es ja, wenn Du dem Dateinamen vorne einen Buchstaben verpasst...
Private Nachricht senden Benutzer-Profile anzeigen
 
Ronja

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2017, 08:44     Titel:
  Antworten mit Zitat      
Guten Morgen,

Also ich hab das jetzt über Einstellungen eingestellt und den Computer neugestartet, damit er die Änderung auch übernimmt. Aber die Datei sieht immer noch genauso aus. Ich werde mir den Spaß gleich mal in der Uni an einem Windows-Rechner anschauen, vielleicht finde ich da ja die Endung, die es haben müsste.
Das mit einem Buchstaben vorne habe ich auch schon probiert, hilft leider nicht.

Code:
% mit diesem Befehl erscheint der frühere Fehler
else % if you have not saved the data as mat-file before
       
        fprintf('\tData not previously saved as mat-files. Loading...\n');
       
        % list the files in the folder and choose the right one
        ls_files = ls(beh_path_spec);
        ls_file_idx = false(size(ls_files, 1), 1);
        for n = 1:size(ls_files, 1)
            if ~isempty(regexp(ls_files(n, 1:3), subjects{sub, 1}(2:4), 'once'))
                ls_file_idx(n, 1) = true;
            end
        end


Grüße
Ronja
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.06.2017, 09:04     Titel:
  Antworten mit Zitat      
Hallo,

ist das selbstgeschriebener Code, oder woher kommt der?
Hast du es mal mit dem Debugger versucht?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ronja

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2017, 12:22     Titel:
  Antworten mit Zitat      
Hi,

Also auf dem Windows-Rechner hat er die files brav alle umgewandelt und gespeichert. Ich musste nur wieder textscan statt dopen verwenden und dann war alles tutti.

Vielen Dank für eure Hilfe und Ideen

Liebe Grüße
Ronja
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.06.2017, 12:28     Titel:
  Antworten mit Zitat      
Hallo,

textscan kann man nicht statt fopen verwenden. Man muss zwingend fopen vor textscan verwenden, um eine File ID zu erzeugen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Ronja

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2017, 13:04     Titel:
  Antworten mit Zitat      
Hey,

ja, das mache ich im Schritt davor...also jetzt ist die Berechnung so:

Code:
%correcter Code für Windows
fileID = fopen(fullfile(beh_path_spec, actual_file));
        tmp_data = textscan(fileID, '%s %s %s %s %s %s %s %d %d %d %s %s %s %s %s %s %d %d', 'HeaderLines', 1)


aber auf meinem Mac hatte mir Matlab ja da zuerst die Fehlermeldung gesagt:

Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in LK_AppleGame_TestPathIntegrationModel_RS_130617 (line 241)
tmp_data = textscan(fileID, '%s %s %s %s %s %s %s %d %d %d %s %s %s %s %s %s %d %d', 'HeaderLines',
1);

ich habe dann "fopen" verwendet und da war der filename falsch.

>> tmp_data = fopen(fileID, '%s %s %s %s %s %s %s %d %d %d %s %s %s %s %s %s %d %d', 'HeaderLines', 1)
Error using fopen
Invalid filename.
>>

Ich verwende also im zweiten Schritt nun wieder textscan statt fopen Smile

Liebe Grüße
Ronja
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2017, 13:06     Titel:
  Antworten mit Zitat      
Ronja hat Folgendes geschrieben:
ich habe dann "fopen" verwendet und da war der filename falsch.

Code:
tmp_data = fopen(fileID, '%s %s %s %s %s %s %s %d %d %d %s %s %s %s %s %s %d %d', 'HeaderLines', 1)
Error using fopen
Invalid filename.
 



Da war nicht der Dateiname falsch, sondern einfach der ganze Aufruf macht keinen Sinn. Die Argumente gehören ja zu textscan und nicht zu fopen ...
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: 20.06.2017, 12:38     Titel:
  Antworten mit Zitat      
Hallo Epfi

Zitat:
Dürfen Dateinamen vorne mit Zahlen sein?

Ja, Filenamen dürfen mit Zahlen starten und Leerzeichen enthalten. Nur Matlab Scripte, Funktionen, Variablesn und Struct-Fieldnames sind von der Regel betroffen: <= 63 Alpha-Numerische Zeichen, erster Buchstabe ein Buchstabe.

Hallo Ronja,
Ist Dein Problem nun gelöst?

Gruß, Jan
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.