0

特定のフォルダー内のさまざまなファイルに定期的にコードの出力を書き込みたい。私が使用しているコードは次のとおりです。

for i=1:m
% some other things
     if (mod(i,1000)==0)
      y=[1:dx:n_x;c_initial.'];
      fn = ['/home/alekhine' num2str(i) '.dat'];
     fid=fopen(fn);
      fprintf(fid,'%6.4f  %12.8f\n',y);

      fclose(fid);
      end
end

しかし、次のようにMatlabからエラーが発生しています

Error using ==> fprintf
Invalid file identifier.  Use fopen to generate a valid file
identifier.

. コードのどこが間違っていますか? どんな助けでも大歓迎です。

4

3 に答える 3

2

参考までに、ファイル名を作成する好ましい方法はFULLFILEを使用することです。この場合、次のことができます

fn = fullfile('/home/alekhine', [num2str(i), '.dat']);

\FULLFILE は、さまざまな OS タイプ (つまり、Windows と/UNIX/Mac)で異なるファイル セパレータを認識するため、優先されます。

于 2012-09-03T07:13:30.337 に答える
2

fopen 関数に引数を指定していないため、permission読み取り専用で開かれています。

の有効な値については、ドキュメント ( http://www.mathworks.com/help/techdoc/ref/fopen.htmlpermission ) を参照してください。

于 2012-09-02T21:00:33.293 に答える
1

パス生成でパスセパレーターが欠落しているようです:

fn = ['/home/alekhine' num2str(i) '.dat'];

次のようにする必要があります。

fn = ['/home/alekhine/' num2str(i) '.dat'];
于 2012-09-02T21:26:03.230 に答える