在尝试在MATLAB中保存图像时,为什么会出现“打开太多文件”错误消息

时间:2011-06-21 15:49:22

标签: matlab

我有一个for循环,可以使用saveas(gcf,[%link,'.jpg'])在每次迭代时保存图像。它在开始时运行良好,但崩溃并显示如下错误消息:

  

???使用==>时出错打印339无法创建输出文件'/20110301/20110301225100.jpg'

     

==>中的错误保存在155

     

==>中的错误TSI_forecast_display_cloud_decision at 153 java.io.FileNotFoundException:/home/cwchow/.matlab/R2010a/matlab.prf(打开过多的文件),位于java.io.FileOutputStream的java.io.FileOutputStream.open(Native Method)。(未知来源)来自com.mathworks.services.Prefs $ SavePrefsThread.run(Prefs.java:702)的com.mathworks.services.Prefs.save(Prefs.java:295)中的java.io.FileOutputStream。(未知来源)

如果我使用print,我会得到类似的结果。我猜MATLAB没有正确关闭文件导致打开太多文件。谁能告诉我如何避免这个错误?

更新

我尝试了数字句柄和fclose('all')。我甚至使用close all,它们不起作用。我仍然得到同样的错误。我检查了系统限制,它已经是1024。

3 个答案:

答案 0 :(得分:4)

尝试在fclose('all')之后调用saveas(假设您没有其他打开的文件句柄),以确保saveas正在正确关闭文件句柄。

答案 1 :(得分:1)

听起来好像在保存到文件后没有关闭每个文件。在Java中,你可以在完成后调用close()。

答案 2 :(得分:1)

在即将发布的2011b版本中应该修复的一个错误如下:

  

描述:在某些Linux系统上,   基于Linux OS描述符   限制,正常使用MATLAB可能   触发以下错误:

Too many files open.
Unexpected error status flag encountered. Resetting to proper
     

状态。虽然一些GUI可能会继续   工作,MATLAB命令行将   始终错误。解决方法:检查   Linux操作系统限制使用限制   Linux shell中的命令:

     

[hostname:/ home / lusername] 1%限制   描述符如果描述符限制   设置为小于1024,重置   描述符限制为1024.这将   是壳依赖的。在tcsh中,使用   此命令在启动文件中(如   .cshrc)是合适的:限制   描述符1024