Matlab循环中的无效文件标识符错误
Invalid file identifier error in Matlab loop
如果我 运行 下面的示例代码,我在 Matlab 中收到无效文件标识符错误:
for i = 1:99999
fid = fopen('test.txt','w');
fprintf(fid,'%s', 'Hello World!\r\n');
fclose(fid);
delete('test.txt');
end;
??? Error using ==> fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
有趣的是,如果我减少循环次数,就不会出现错误。我研究了这个问题,似乎 none 导致 error(文件路径错误、文件损坏、文件不存在、文件已在使用中)的常见问题是罪魁祸首,因为如果我将循环更改为 10 而不是 99999,它会起作用。
经过进一步研究,Matlab Forum Post,问题似乎与配额有关(我认为配额与 OS 有关,其中 OS、Windows在我的情况下,10 不允许程序在同一程序写入一定数量的文件后写入文件?)。
如何增加配额?有解决办法吗?我在 Windows 10.
上使用 Matlab 2010a
我也曾尝试 运行在管理员模式下使用 Matlab 但没有成功。
我假设权限是正确的并且磁盘 space 不是问题,但是您仍然应该检查 fopen 的输出以获取更多信息或一些调用 ferror(fid) 以获取额外数据的 try-catch (显然,请注意没有分号)。
[fid,msg]=fopen('test.txt','w')
如果它与配额相关,您应该能够在硬盘驱动器的属性中禁用它,如下图所示(它是西班牙语,但您应该明白了)。只需右键单击该单元并访问 Properties->Disk Quota->Show Configuration 并禁用它(如果尚未禁用)。
如果我 运行 下面的示例代码,我在 Matlab 中收到无效文件标识符错误:
for i = 1:99999
fid = fopen('test.txt','w');
fprintf(fid,'%s', 'Hello World!\r\n');
fclose(fid);
delete('test.txt');
end;
??? Error using ==> fprintf Invalid file identifier. Use fopen to generate a valid file identifier.
有趣的是,如果我减少循环次数,就不会出现错误。我研究了这个问题,似乎 none 导致 error(文件路径错误、文件损坏、文件不存在、文件已在使用中)的常见问题是罪魁祸首,因为如果我将循环更改为 10 而不是 99999,它会起作用。
经过进一步研究,Matlab Forum Post,问题似乎与配额有关(我认为配额与 OS 有关,其中 OS、Windows在我的情况下,10 不允许程序在同一程序写入一定数量的文件后写入文件?)。
如何增加配额?有解决办法吗?我在 Windows 10.
上使用 Matlab 2010a我也曾尝试 运行在管理员模式下使用 Matlab 但没有成功。
我假设权限是正确的并且磁盘 space 不是问题,但是您仍然应该检查 fopen 的输出以获取更多信息或一些调用 ferror(fid) 以获取额外数据的 try-catch (显然,请注意没有分号)。
[fid,msg]=fopen('test.txt','w')
如果它与配额相关,您应该能够在硬盘驱动器的属性中禁用它,如下图所示(它是西班牙语,但您应该明白了)。只需右键单击该单元并访问 Properties->Disk Quota->Show Configuration 并禁用它(如果尚未禁用)。