写入文件错误:“打开的文件太多”

时间:2013-01-21 14:41:22

标签: arrays matlab text

我想写一个数组cloud,它不是一个数组,它存储一个圆形云的坐标,有两列纬度和经度。我希望这些坐标以这样的方式写在文本文件上。

 418.9517   43.9866
 419.2260   44.1501
 419.4826   44.3402
 419.7190   44.5550
 419.9327   44.7923
 420.1217   45.0497

使用此代码,我想生成多个这样的文件,将一个云的坐标存储在一个文件中。

此处a是前两列纬度和经度(圆心)和第三个圆半径的数组。并z =size(a)。(即2905x3)。这样就可以写入总共2905个文件。

for s =1:z(1)
    r= a(s,3);

    ang=0:0.1:2*pi; 
    xp=a(s,1) + r*cos(ang);  
    yp=a(s,2) + r*sin(ang);  
    xp=xp';
    yp= yp';
    cloud = [xp,yp]

    filename = ['Shower_Cloud',s,'number.txt']
    file_id = fopen (filename,'w');
    fprintf(file_id,'%g\t',cloud[]);
    fclose(file_id);
end

运行代码时出现的错误是我无法自行诊断出这个问题的主要问题,尽管我觉得这个问题很小。

     >> xyz
     D:\Users\Vikram\Documents\MATLAB\Manuela\Version_2\Weather\Shower\xyz.m:
     Too many files open; check that FILES = 20 in
     your CONFIG.SYS file.

     Unexpected error status flag encountered.  Resetting to proper state.

请问我是否错过了一些重要的事情。

3 个答案:

答案 0 :(得分:4)

这只是一个猜测,但是在将数字与字符串连接时可能会出现奇怪的行为。 您可能希望在创建文件名时使用num2str(s)

答案 1 :(得分:0)

程序的其他部分可能会丢失已打开的文件。使用fopen('all')列出打开文件的文件句柄。这可能是追捕这个错误的起点。

答案 2 :(得分:0)

最有可能的是,代码中某些错误会导致许多文件被打开而不会被关闭。请注意,即使您发布的代码确实正确关闭了每个文件,如果您仍在运行相同的MATLAB会话,您仍可能打开文件。

您可以关闭所有当前打开的文件:

fclose all

所以我建议你首先在MATLAB提示符中键入它。如果您仍然有错误,请查看:

fopen all

列出了所有当前打开的文件;希望这会给你足够的信息来找到问题。