Matlab fopen错误-工作一段时间后出现错误

Matlab fopen错误-工作一段时间后出现错误,matlab,fopen,Matlab,Fopen,我有一个运行一系列for循环的脚本,在这些for循环中创建了一个文件,然后使用script命令使用外部程序运行该文件。总之,它看起来是这样的: for i=1:n1 for j=1:n2 for k=1:n3 fid=fopen('file.txt','w'); fprintf(fid,'Some commands to pass to external program depending on i j k'); fclose(fid);

我有一个运行一系列for循环的脚本,在这些for循环中创建了一个文件,然后使用script命令使用外部程序运行该文件。总之,它看起来是这样的:

for i=1:n1
  for j=1:n2
    for k=1:n3
      fid=fopen('file.txt','w');
      fprintf(fid,'Some commands to pass to external program depending on i j k');
      fclose(fid);
      system('program file.txt');
    end
  end
end
该脚本总共有大约500k个案例(n1xn2xn3),对于小场景(大约100次运行)运行良好,但对于整个脚本,它运行了一段时间,然后返回一个错误,没有明显的原因,导致以下错误:

fopen无效的文件标识符对象


这没有明显的原因,我想知道是否有人能指出问题所在

只是猜测:外部程序的一个实例正在读取file.txt,同时嵌套循环的下一次迭代想要打开file.txt进行写入。同时运行的外部程序实例越多,机器速度越慢,出现这种情况的可能性就越大。(称为“竞争条件”)

可能的解决方案是:每个案例使用一个单独的文本文件,并具有唯一的文件名

您还应该考虑使用其他方法来调用外部函数,因为对于500 K的文件处理应该非常慢。

希望有帮助, 伊莱