3

我想编写一个数组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.

请询问我是否错过了要提及的重要内容。

4

3 回答 3

4

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

于 2013-01-21T15:05:12.407 回答
0

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

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

fclose all

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

fopen all

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

于 2013-01-21T15:04:43.827 回答
0

也许你程序的其他部分会丢失打开的文件。用于fopen('all')列出打开文件的文件句柄。这可能是寻找错误的起点。

于 2013-01-21T14:54:55.607 回答