3

cloud緯度と経度の2列の円形雲の座標を格納する配列に他ならない配列を書きたいと思います。これらの座標をこのようにテキストファイルに書き込んでほしい。

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

このコードを使用して、1つのファイルに単一のクラウドの座標を格納するそのようなファイルを複数生成したいと思います。

これaは、緯度と経度(円の中心)の最初の2つの列と、円の3番目の1つの半径を持つ配列です。そして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 に答える