我想写一个数组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.
请问我是否错过了一些重要的事情。
答案 0 :(得分:4)
这只是一个猜测,但是在将数字与字符串连接时可能会出现奇怪的行为。
您可能希望在创建文件名时使用num2str(s)
。
答案 1 :(得分:0)
程序的其他部分可能会丢失已打开的文件。使用fopen('all')
列出打开文件的文件句柄。这可能是追捕这个错误的起点。
答案 2 :(得分:0)
最有可能的是,代码中某些错误会导致许多文件被打开而不会被关闭。请注意,即使您发布的代码确实正确关闭了每个文件,如果您仍在运行相同的MATLAB会话,您仍可能打开文件。
您可以关闭所有当前打开的文件:
fclose all
所以我建议你首先在MATLAB提示符中键入它。如果您仍然有错误,请查看:
fopen all
列出了所有当前打开的文件;希望这会给你足够的信息来找到问题。