【问题标题】:Matlab options for curve-fitting with custom equation (TDR application for RC measurement)使用自定义方程进行曲线拟合的 Matlab 选项(用于 RC 测量的 TDR 应用程序)
【发布时间】:2014-06-25 03:11:46
【问题描述】:

我有以下必须适合数据的自定义函数:

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 电路中。 上面链接中的图像以秒和伏特为单位的可能值的比例。

【问题讨论】:

  • 在终端输入cftool,尝试在matlab中使用UI进行曲线拟合工具。在那里你可以看到各种功能,尝试所有的功能

标签: matlab curve-fitting oscilloscope


【解决方案1】:

一般来说,将多参数模型拟合到约束不足的数据是一个难题。您最终可能不得不使用更复杂的方法,例如使用马尔可夫链蒙特卡罗方法——它的好处是可以保证收敛到全局误差最小值(尽管不是在可预测的时间内)。

您是否尝试过使用不同的拟合算法?如果您可以访问统计工具箱,请尝试doc nlinfit。此函数可以使用 Levenberg-Marquardt 算法或迭代重新加权最小二乘算法。此外,您可以相对轻松地获得拟合参数的置信区间,这使您可以很好地了解拟合的好坏。

拟合效果不佳的原因是,默认情况下,它使用 Levenberg-Marquardt 算法,该算法依赖于容易陷入局部最小值的梯度下降方法。所以,公平地说,是 nlinfit,但你对它有更多的控制权。

首先,稍微重新定义你的函数:

function y=reflectometriaRC(b, x)
%The function to fit; inputs: b, a vector of parameters, and x, 
%the independent variable (e.g. time)
v0=b(1);
t0=b(2);
v1=b(3);
t1=b(4);
v2=b(5);
v3=b(6);
tau=b(7);

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

然后,在您的脚本中:

opts = statset('nlinfit');
opts.RobustWgtFun = 'bisquare';
beta0= [0, 0, 0.5, 0, 0,0, 0];
params=nlinfit(x, y, @reflectometricaRC, beta0,opts);

这会返回相对接近真实参数的参数——在数值上,四个中的三个是相同的(零),其他的在两倍之内,但拟合仍然不是太好了。您可能要么不得不使用beta0,使用的错误模型,或者——我的建议——使用更多的计算时间并选择MCMC 方法—— - 这是我在拟合高维模型时使用的。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多