sfitオブジェクト​をテキストファイルに​書き込むにはどうすれ​ばいいですか?

4 views (last 30 days)
Shuichi Nagamatsu
Shuichi Nagamatsu on 5 Apr 2023
曲線(曲面)近似 [f, gof]=fit([x, y], z, ft, fo) の結果である
f(sfitオブジェクト)を指定したテキストファイルに書き込むにはどうすればいいでしょうか?

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 5 Apr 2023
  1. (面倒) sfit オブジェクトの要素にアクセスしてテキストファイルに書き出す ※ sfit オブジェクトのアクセス方法
  2. (簡単) diary 関数でsfit オブジェクトの表示内容をテキストファイルに保存する
load franke
sf = fit([x, y],z,'poly23') % sfit オブジェクトのサンプルデータ
Linear model Poly23: sf(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3 Coefficients (with 95% confidence bounds): p00 = 1.118 (0.9149, 1.321) p10 = -0.0002941 (-0.000502, -8.623e-05) p01 = 1.533 (0.7032, 2.364) p20 = -1.966e-08 (-7.084e-08, 3.152e-08) p11 = 0.0003427 (-0.0001009, 0.0007863) p02 = -6.951 (-8.421, -5.481) p21 = 9.563e-08 (6.276e-09, 1.85e-07) p12 = -0.0004401 (-0.0007082, -0.0001721) p03 = 4.999 (4.082, 5.917)
%% sfit オブジェクトの要素にアクセスしてテキストファイルに書き出す
fid = fopen('mysfit.txt','w');
fprintf(fid,"%s\n",formula(sf));
cellfun(@(x) fprintf(fid,'%s = %8.3e\n',x,sf.(x)), coeffnames(sf));
fclose(fid);
type mysfit.txt % 上記と同様に全部書き出すのは面倒!
p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3 p00 = 1.118e+00 p10 = -2.941e-04 p01 = 1.533e+00 p20 = -1.966e-08 p11 = 3.427e-04 p02 = -6.951e+00 p21 = 9.563e-08 p12 = -4.401e-04 p03 = 4.999e+00
%% コマンドラインの文字列をファイルに保存する
diary myDiary.txt
sf
Linear model Poly23: sf(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3 Coefficients (with 95% confidence bounds): p00 = 1.118 (0.9149, 1.321) p10 = -0.0002941 (-0.000502, -8.623e-05) p01 = 1.533 (0.7032, 2.364) p20 = -1.966e-08 (-7.084e-08, 3.152e-08) p11 = 0.0003427 (-0.0001009, 0.0007863) p02 = -6.951 (-8.421, -5.481) p21 = 9.563e-08 (6.276e-09, 1.85e-07) p12 = -0.0004401 (-0.0007082, -0.0001721) p03 = 4.999 (4.082, 5.917)
diary off
type myDiary.txt % ここでは表示出来ないが、上記表示内容がそのままテキスト形式で保存される
  3 Comments
Atsushi Ueno
Atsushi Ueno on 6 Apr 2023
MATLAB Answer で動くMATLABは、UI系コマンドが動かない等の制約がある為です。
ご自身でお使いのMATLAB(Desktop版またはOnline版)であればdiary 関数が正常に機能するはずです。
実験してみたところ下記の結果になりました。
  • MATLAB Answer:diary 関数が正常に機能しない(空のファイルが出力される)
  • MATLAB Online :diary 関数が正常に機能する
  • MATLAB Desktop:diary 関数が正常に機能する
Shuichi Nagamatsu
Shuichi Nagamatsu on 7 Apr 2023
ライブエディタでは出力されませんでしたがエディタで実行すると出力することが出来ました。
ありがとうございました。

Sign in to comment.

More Answers (0)

Categories

Find more on 起動と終了 in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!