最近在做一个非线性拟合的模型,拟合出来的关系是一个S型函数。但是当自变量的值过大时,自变量和因变量对应关系不是非常好,换句话说从因变量的值不能反推自变量的值,于是需要做一个修正,将数值过大的一段函数关系修正成为和函数中间段差不多的线性关系。我把函数的原数据贴上来:
x = [-10 0 10 20 30 40];%%对数表示
y = [0.00275 0.02280 0.08609 0.12055 0.12566 0.12619];
xi=linspace(-10,40,500);
b0=[0.5 0.5 0];
b=nlinfit(x,y,@myfunc,b0);%%myfunc已定义在m文件中
yii = 1./(b(1)+b(2)*exp(-b(3).*xi));
plot(x,y,'-ob',xi,yii,'k');
grid on;
xlabel('电阻抗增加值(X=10logK)');
ylabel('重构电阻抗变化');
title '电阻抗与重构值关系';
legend('原始数据','非线性拟合','Location','Northwest');
m文件如下:
function f = myfunc(b,x)
f = 1./(b(1)+b(2)*exp(-b(3).*x));
end
下面传图:
原始拟合关系如下
希望找到一个函数可以修正成如下关系(红 {MOD}标注):
希望能到到指点和启发。
一周热门 更多>