データに適合させる必要がある次のカスタム関数があります。
function y=reflectometriaRC(x,v0,t0,v1,t1,v2,v3,tau)
y=zeros(size(x));
for i=1:length(x)
if x(i)<t0,
y(i)=v0;
elseif x(i)<t0+t1,
y(i)=v1;
else
y(i)=v2+v3*(1-exp(-(x(i)-(t0+t1))/tau));
end
end
end
この関数の例を次の図に示します。
問題は、「フィット」機能を適切に機能させるための正しいオプションが見つからないことです。
私はこのようなことを試しました:
x=transpose([0:200*10^-12:1200*10^-9]);
y=reflectometriaRC(x,0,100*10^-9,0.98,100*10^-9,0,1.96,250*10^-9);
ft = fittype('reflectometriaRC(x,v0,t0,v1,t1,v2,v3,tau)');
f = fit( x, y, ft,'Robust','on', 'MaxFunEvals',600000,'MaxIter',400000000, 'StartPoint', [0, 0, 0.5, 0, 0,0, 0], 'Lower',[0, 0, 0.5, 0, 0,0, 0] );
coeffvalues(f)
しかし、結果はある種の階段関数にすぎません。
フィッティングを機能させるための適切な構成は何ですか?
このコードのアイデアは、基本的な TDR のようなパルス発生器で使用されるオシロスコープから測定値を取得することです。1m の同軸線の端にある RC 回路の被試験デバイス。上のリンクの画像は、秒とボルトで可能な値のスケールです。