我有一个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。
答案 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