我有以下必须适合数据的自定义函数:
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 电路中。上面链接中的图像是以秒和伏特为单位的可能值的比例。