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

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

Réponse acceptée

Atsushi Ueno
Atsushi Ueno le 5 Avr 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 commentaires
Atsushi Ueno
Atsushi Ueno le 6 Avr 2023
MATLAB Answer で動くMATLABは、UI系コマンドが動かない等の制約がある為です。
ご自身でお使いのMATLAB(Desktop版またはOnline版)であればdiary 関数が正常に機能するはずです。
実験してみたところ下記の結果になりました。
  • MATLAB Answer:diary 関数が正常に機能しない(空のファイルが出力される)
  • MATLAB Online :diary 関数が正常に機能する
  • MATLAB Desktop:diary 関数が正常に機能する
Shuichi Nagamatsu
Shuichi Nagamatsu le 7 Avr 2023
ライブエディタでは出力されませんでしたがエディタで実行すると出力することが出来ました。
ありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 近似の後処理 dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!