Tengo una secuencia de comandos de MATLAB que yo podría haber jurado trabajó muy bien la última vez que lo usé (hace un año). Ahora, me sale este error:

Invalid file identifier.  Use fopen to generate a valid file identifier.

Si lo he entendido correctamente, es no encontrar o abrir(?) un archivo especificado en otra parte del script. Esto es correcto? Si es así, lo que podría causar?

El error siempre debe asociarse a una determinada línea de código fuente. El uso que identificar el problema.
Es posible que el archivo no está en el directorio de trabajo actual o en su matlab camino en algún lugar?
Me fui de nuevo a la línea del error señalado, pero no veo ningún problema con ella.
Todos ellos parecen estar en los directorios correctos.
El problema es que cualquier línea es que está fallando es el uso de un IDENTIFICADOR de archivo que no es válido. O usted no está pasando un IDENTIFICADOR de archivo que fue creado con fopen, o fopen fallado.

OriginalEl autor nikipedia | 2012-05-15

11 Comentarios

  1. 10

    fid (identificador de archivo) es el resultado de fopen. Es un entero, pero no relacionada con el archivo de forma permanente. Usted necesidad de utilizar fopen para obtener el fid. A mí me parece que usted está usando incorrecto fid (identificador de archivo) en algunos relacionados a archivos de e/S de comandos, tales como fread, fscanf o fclose. Incorrecta fopen da fid de -1. Para cualquier válido archivo normal éxito fopen dará fid que es 3 o mayor entero.

    Sin embargo, sin ningún tipo de código es imposible decir dónde o lo que el bug o error. Usted podría utilizar MATLAB depurador a un solo paso el código de fopen (establecer el punto de interrupción allí y ejecutar el programa) hasta el pertinente fclose y ver si fid (o cualquiera sea el nombre de la variable que uso para el identificador de archivo) o cualquier estructura de datos para el archivo de identificadores (si tiene más de un archivo identificador en el código) cambios en cualquier punto entre las fopen y fclose.

    OriginalEl autor nrz

  2. 8

    He resuelto este problema para mi auto por la adición de el permiso opción a fopen.
    Como se puede ver en http://www.mathworks.se/help/matlab/ref/fopen.html , fopen sintaxis es:

    fileID = fopen(filename,permission)

    Los permisos posibles, por ejemplo, son:
    ‘r’ (por defecto) | ‘w’ | ‘a’ | ‘r+’ | ‘w+’|’+’ | …

    ‘r’ – Abrir el archivo para lectura.

    ‘w’ – Abrir o crear un nuevo archivo para escribir. Deseche el contenido existente, si los hubiere.

    ‘a’ –
    Abrir o crear un nuevo archivo para escribir. Añadir datos al final del archivo.

    ‘r+’ – Abrir el archivo para lectura y escritura.

    ‘w+’ – Abrir o crear un nuevo archivo para lectura y escritura. Deseche el contenido existente, si los hubiere.

    ‘a+’ – Abrir o crear un nuevo archivo para lectura y escritura. Añadir datos al final del archivo.

    Si puedo usar fopen sin opción de permiso, o si puedo usar ‘r’ (predeterminada), fopen devolverá -1, que es el error. Me éxito con este:

    fid=fopen('tmp.txt', 'w');
    fid=fopen('tmp.txt', 'a');
    Estoy usando el permiso ‘rt’, fid = fopen(offfullname,’rt’), pero sigue recibiendo fid=-1, y el mismo error de archivo no válido «identificador», como el autor está recibiendo. Se hizo uso de funcionar bien, incluso hace una semana!

    OriginalEl autor Mindaugas

  3. 6

    He tenido este problema. Resultó que el archivo que yo estaba tratando de escribir era demasiado grande (no tiene suficiente espacio libre para acomodar). Sin embargo, el programa no dejó hasta que la llamada a fclose. Muy confuso!

    Intentar liberar algo de espacio, o escribir un archivo muy pequeño, para probar este diagnóstico.

    OriginalEl autor mp4man

  4. 6

    He encontrado con el mismo problema al intentar abrir la ASF caja de herramientas demos. Ejecuta Matlab como administrador(clic derecho para abrir) parecía resolver este problema para mí.

    No funciona para Ubuntu. Ejecutar con sudo, pero sigue teniendo el problema.

    OriginalEl autor Aaki

  5. 3

    fopen puede fallar debido a que MATLAB no tiene permisos para leer/escribir el archivo que ha especificado.

    Tratar de abrir un archivo en una ubicación/MATLAB tiene todos los derechos (dependiendo de su sistema operativo).

    OriginalEl autor Maxime Lefrançois

  6. 1

    He utilizado fopen con el permiso y el mismo error salió. Sin embargo, me comenzó a MATLAB como admin y que llevó a la atención del problema.

    De verdad que no. Al menos que no se soluciona es para mí.

    OriginalEl autor abdul_penn

  7. 0

    Me había abierto el archivo en excel y como resultado fopen devuelve un -1.
    Me llevó una eternidad para encontrar un problema trivial.

    OriginalEl autor masaguchi46

  8. 0

    El camino con una barra diagonal al principio puede causar el mismo error.

    filename = '/data/myfile.txt';

    lanza este error, mientras que

    filename = 'data/myfile.txt';

    no produce un error.

    OriginalEl autor Felix Solomon

  9. 0

    También sucede cuando se intenta crear un archivo en una inexistente directorio. Trate de mkdir('folderName') dentro de MATLAB o simplemente crear el directorio de antemano.

    OriginalEl autor Juan Terven

  10. -1

    Para mi situación, he comprobado todo, pero se perdió un paso fácil.

    Por favor, seleccione «examinar la carpeta de» y busque su actual ubicación del documento antes de ejecutar su «fopen» código.

    Qué hace que un archivo no válido de identificación en MATLAB?

    HOLA y bienvenidos a ASÍ, considere la posibilidad de hacer el tour, y tener una mirada en la Cómo Responder.

    OriginalEl autor Daniel Lu

  11. -3

    También se produce cuando una secuencia de comandos está tratando de leer más allá del final del archivo.

    No. Mal. Lo siento.

    OriginalEl autor FerRguez

Dejar respuesta

Please enter your comment!
Please enter your name here