円滑なR^n -> R
関数の最適化アルゴリズムが必要です。ベアボーンMatlabにしかアクセスできないので、File Exchangeからアルゴリズムを取得することをお勧めします。説明のために私はLMFnlsq
を選んだが、これは少し問題があるので十分であるが、ここでは一般的で少し不慣れだと思われる。
LMFnlsq
をダウンロードし、Matlabパスに追加してください。
例関数が呼び出さregr_fun
する便宜上
:
%---------------------------------------------------------------------
% DUMMY DATA
%---------------------------------------------------------------------
% Generate data from known model contaminated with random noise
rng(333) % for reproducibility
alpha = 2;
beta = 0.1;
gamma = 0.1;
par = [alpha, beta, gamma];
xx = 1:50;
y_true = regr_fun(par, xx);
yy = y_true + normrnd(0,1,1,50);
%---------------------------------------------------------------------
% FIT MODEL
%---------------------------------------------------------------------
% intial point of solver
p0 = [1,1,1];
obj_fun = @(p) sum((regr_fun(p, xx) - yy).^2);
% optimization
p_fit = LMFnlsq(obj_fun, p0);
y_fit = regr_fun(p_fit, xx);
%---------------------------------------------------------------------
% PLOT
%---------------------------------------------------------------------
plot(xx, yy, 'o')
hold on
plot(xx, y_true)
plot(xx, y_fit, '--')
:(regr_fun
と同じフォルダに)
function y = regr_fun(par, x)
alpha = par(1);
beta = par(2);
gamma = par(3);
y = (1 - alpha + alpha./sqrt(1 + 2*beta*(gamma*x).^2./alpha)).^(-1) - 1;
end
カーブフィッティング
注
同様matlab.codetools.requiredFilesAndProducts
リストシンボリックツールボックスは、この問題のためにそれを必要とされていないと機能は同様にそのwithouth実行する必要がありますが。
多くの回答があります。少し具体的になりますか? – Suever
私が適合しようとしている機能の詳細をいくつか追加しました。誰かが答えるのを助けることができるものが他にもあれば教えてください。 – user1936752
どのように最適化を定義/測定しますか?あなたのデータセットの大きさ(xとyの長さ)はどれくらいですか?どのツールボックスが利用できますか? Moore-Penrose pseudoinverse ['pinv'](http://www.mathworks.com/help/matlab/ref/pinv.html)による最小二乗適合は、良い出発点になるかもしれません。 @とユーザーの名前を使用して通知を受け取るようにすると、回答が得られる可能性が高くなります。 – Arpi