Skip to content

Instantly share code, notes, and snippets.

@monhime
Created January 14, 2020 07:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save monhime/4c44eee5cad72feeede7c89c12756596 to your computer and use it in GitHub Desktop.
Save monhime/4c44eee5cad72feeede7c89c12756596 to your computer and use it in GitHub Desktop.
インパルス電圧印加時の火花電圧の推定
% V: 印加した電圧のベクトル
V = [74.121; 88.9452; 93.8866; 96.3573; 97.59265; 98.828; 101.2987; 103.7694; 106.2401; 108.7108; 111.1815; 113.6522; 123.535]
% P: その電圧での火花放電率
P = [0; 0; 0.2; 0.2; 0.2; 0.1; 0.4; 0.7; 0.7; 0.8; 1; 1; 1]
% 係数ベクトルkと、入力vの関数を作成
% normcdf(x,m,v)は平均値m, 標準偏差vの正規累積分布のxのときの値を出力します
% k(1)が平均値, k(2)が標準偏差を表します
p = @(k,vdata) normcdf(vdata,k(1),k(2));
% 係数ベクトルxの各要素の初期値(なんとなく予想できる値)
k0 = [100 10];
% 各係数が出力されます
k = lsqcurvefit(p, k0, V, P)
% k = [102.5146 5.7996]だったとします
% これは平均値が102.5146 , 標準偏差が5.7996の累積正規分布に近似できたことを意味します
% 計測値と近似曲線を重ねます
plot(V, P, 'o');
hold on;
% 近似曲線の式を作り直します
% ↑キーでモデル式定義したときの式に遡り、@(k,vdata)を@(vdata)に変えるだけです
p = @(vdata) normcdf(vdata,k(1),k(2));
fplot(f);
% テキストボックスに数式を入れるとき数式に翻訳してくれないときがあるので、先にコマンドで書き込みます
% 数式を書き込めたらあとは数式をダブルクリックして編集できます
text(90,0.9,'$$ P=\frac{1}{2}\mathrm{erfc}\left(-\frac{x-102.5}{\sqrt{2}\times 5.8}\right) $$','Interpreter','latex');
% あとはプロパティインスペクターでグリッド入れたり、ラベルやタイトルを入れます
hold off;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment