2010-12-27 16 views
0

MATLABのテキストファイルにいくつかの結果を出力することについて質問があります。本質的に私は50000ファイル(1から50000まで順番に番号が付けられている)からデータを読み込み、それをプロットしました。特定の条件を満たすファイルのみがプロットされます。私は今、データファイルにテキストを書くことができるいくつかのコードを追加したいと思います。書きたい特定のテキストは、特定の条件を満たす、プロットされたファイル番号(1〜50000)です。テキストファイルへの結果の書き込みに関するMATLABクエリ

これを試してみると、プロットは正常に機能しますが、テキストファイルには最後のファイル番号しか含まれていません。たとえば、プロットする条件を満たす最後のファイル番号が50000の場合、テキストファイルには50000しか含まれません。コードを変更する方法がわかりません - ヘルプ/アドバイス/ヒントがあれば分かります。

start_sim=1; 
end_sim=50000; 
h = zeros (1,10000); 
for i=start_sim:end_sim 
a=int2str(i); 
File =strcat('result_', 'simulation', '_', a, 'I_byCal_totale.out'); 
est_tot=importdata(File, '\t', 1); 
cal_tot=est_tot.data; 
magnitude=1; 
t1=cal_tot(:,1)+1750; 
model=cal_tot(:,3)+cal_tot(:,5); 
if (model(211)>=25) 
if (model(211)<=150) 
h(a)=plot(t1,model); 
xlim([1910 1970]); 
ylim([0 500]); 
hold all 
clickableLegend(h(a),a,'Location','BestOutside') 

%Generate OutputFile 
fid = fopen('Modeloutputs.in','w+'); 

%Generate some text to write in the file (e.g. the simulation number) 
% Print the text in the file 
fprintf(fid,h(a),'\t','\n'); 
%close the file 
fclose(fid); 

end 

答えて

1
fid = fopen('Modeloutputs.in','a+'); 

あなたの仕事を行う必要があります。 'w+'を使用してあなたの最初の試みは

は、既存の ファイルの内容を削除するか、新しいファイルを作成し、読み取りと書き込みのためにそれ を開きます。マニュアルとしては、

が記載されています。もう一つの選択肢は、私が好むループの外にfopen & fcloseを移動することです。

+0

ありがとうございましたZellus - もう一度あなたにお世話になれますか?私はあなたのアドバイスを実装しました。私はコードを実行するときに '\ t'記号を入れていますが、すべてのファイル番号が一緒に結合されています。たとえば、ファイル26000〜26005のシミュレーションを実行すると、作成したテキストファイルは次のようになります:260002600126002260032600426005。別々の行に各ファイル番号を持つ方法はありますか? – mp7

+0

@ mp7:fprintf(fid、 '%f \ n'、h(a))と似たようなものを試してみてください。あなたが実際にプロットハンドルをプロットしたい場合に備えて。 – zellus

関連する問題