我有我可以发誓MATLAB脚本工作得很好我最后一次用它(一年前)。 现在,我得到这个错误:
Invalid file identifier. Use fopen to generate a valid file identifier.
如果我理解正确的话,它未能找到或打开(?)在脚本中的其他地方指定的文件。 这是正确的吗? 如果是这样,是什么引发的呢?
我有我可以发誓MATLAB脚本工作得很好我最后一次用它(一年前)。 现在,我得到这个错误:
Invalid file identifier. Use fopen to generate a valid file identifier.
如果我理解正确的话,它未能找到或打开(?)在脚本中的其他地方指定的文件。 这是正确的吗? 如果是这样,是什么引发的呢?
fid
(文件标识符)是输出fopen
。 这是一个整数,但没有相关的文件永久。 您需要使用fopen
获得fid
。 在我看来,您正在使用不正确fid
在一些文件相关的I / O命令(文件标识符),如fread
, fscanf
或fclose
。 不成功fopen
给出了fid
的-1
。 对于任何有效的普通文件成功fopen
会给fid
是3
以上的整数。
然而,没有任何代码,它不可能说在哪里或什么错误或误差。 你可以使用MATLAB的调试器来单步从相关代码fopen
(设置断点存在并运行程序),直至相关fclose
,看看是否fid
(或任何变量名使用的文件标识符),或为您的文件标识符的任何数据结构(如果在你的代码的多个文件标识符)相关之间的任何一点变化fopen
和fclose
。
我加入的许可选项给fopen解决了这个问题我自己。 正如你在看到http://www.mathworks.se/help/matlab/ref/fopen.html ,FOPEN语法是:
fileID = fopen(filename,permission)
可能的权限,例如有:“R”(默认)| 'W' | 'A' | 'R +' | 'W +' | 'A +' | ...
“R” - 读打开文件。
“W” - 开启或写创建新的文件。 放弃现有的内容,如果有的话。
“A” - 打开或创建写入新文件。 数据追加到文件的末尾。
“R +” - 为读写打开文件。
“W +” - 打开或创建用于读取和写入新文件。 放弃现有的内容,如果有的话。
“A +” - 为读写打开或创建新的文件。 数据追加到文件的末尾。
...
如果我使用的fopen擅自选项,或者如果我使用“R”(默认设置)选项,会的fopen返回-1,这是错误。 我的成功与此:
fid=fopen('tmp.txt', 'w');
fid=fopen('tmp.txt', 'a');
我有这个问题。 原来,我试图写入文件过大(我没有足够的自由空间来容纳它)。 然而,该计划并没有失败,直到调用FCLOSE。 很混乱!
尽量腾出一些空间,或者写一个非常小的文件,来测试这个诊断。
试图打开ASF工具箱演示时,我遇到了同样的问题。 Matlab的运行作为管理员(右键点击打开)似乎解决了这个问题对我来说。
fopen
失败可能是因为MATLAB没有权限读/写您指定的文件。
尝试(视操作系统而定),打开一个文件在你/ MATLAB拥有所有权利的位置。
我已经使用fopen
许可和同样的错误就出来了。 不过,我开始MATLAB的管理和采取照顾的问题。
我在Excel中,结果FOPEN打开的文件返回-1。 带我永远找到这样一个小问题。
与开头正斜杠的路径可能会导致同样的错误。
filename = '/data/myfile.txt';
抛出这个错误,而
filename = 'data/myfile.txt';
不产生错误。
试图创造一个不存在的目录中的文件时,也发生了。 尝试mkdir('folderName')
内,MATLAB或刚刚创建的目录事前。
对于我的情况,我已经检查过了,但错过了一个简单的步骤。
请选择“浏览文件夹”,并浏览你的当前文档的位置您运行“的fopen”代码之前。
它也发生在一个脚本试图读取超出文件的末尾。