【问题标题】:Invalid file identifier error in Matlab loopMatlab循环中的无效文件标识符错误
【发布时间】:2016-03-10 15:45:53
【问题描述】:

如果我运行下面的示例代码,我会在 Matlab 中得到一个无效的文件标识符错误:

for i = 1:99999
    fid = fopen('test.txt','w');
    fprintf(fid,'%s', 'Hello World!\r\n');
    fclose(fid);
    delete('test.txt');
end;

???使用 ==> fprintf 时出错 文件标识符无效。使用 fopen 生成有效的文件标识符。

有趣的是,如果我减少循环次数,我不会得到错误。我研究了这个问题,似乎导致error(错误的文件路径、损坏的文件、文件不存在、文件已在使用)的常见问题都不是罪魁祸首,因为如果我更改循环到 10 而不是 99999。

经过进一步研究,Matlab Forum Post,似乎问题可能与配额有关(我认为配额与操作系统有关,在我的情况下,Windows 10 不允许程序在某个特定时间后写入文件其中有多少是由同一个程序编写的?)。

如何增加配额?有解决办法吗?我在 Windows 10 上使用 Matlab 2010a。

我也尝试在管理员模式下运行 Matlab,但没有成功。

【问题讨论】:

  • 如果您说“我遇到错误”,请发布完整的错误,以便人们知道是哪一行导致它...
  • 检查:您实际上使用的是 Matlab R2014a/b 吗? Win10 上的 Matlab 2004 听起来有点牵强。
  • 文件所在的驱动器中是否可能没有足够的存储空间?另外,考虑用 %d 替换 %f,它会减少文件大小 ~30%
  • @dfri 对不起,完全错误的版本。我现在已经更正了。现在是 2010a
  • @excaza 抱歉,我现在已经发布了完整的错误

标签: windows matlab quotas


【解决方案1】:

我假设权限是正确的并且磁盘空间不是问题,但是您仍然应该检查 fopen 的输出以获取更多信息或一些调用 ferror(fid) 以获取其他数据的 try-catch(注意没有分号,显然)。

[fid,msg]=fopen('test.txt','w')

如果它与配额相关,您应该能够在硬盘驱动器的属性中禁用它,如下图所示(它是西班牙语,但您应该明白)。只需右键单击该单元并访问属性->磁盘配额->显示配置,如果还没有,请禁用它。

GUI location of the disk quota

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多