fitting with piecewiseLine

I cannnot fitting.
function f1 = piecewiseLine(x,a,b,c)
f1 = zeros(size(x))
if ( b.*x <= 1) & (c.*(100-x)<=1)
f1 = a.*((1-(x.*b)/2+(x.*b).^2./4- 5.*(x.*b).^3/48+7.*(x.*b).^4./192) ./2+1./sqrt((x.*b)+1)./2)+ a.*((1-((100-x).*c)/2+((100-x).*c).^2./4-5.*( (100-x).*c).^3/48+7.*( (100-x).*c).^4./192) ./2+1./sqrt(((100-x).*c)+1)./2)
elseif ( b.*x <= 1) & (c.* (100-x)>1)
f1 = a.*((1-(x.*b)/2+(x.*b).^2./4- 5.*(x.*b).^3/48+7.*(x.*b).^4./192) ./2+1./sqrt((x.*b)+1)./2)+ a.*((sqrt(2./3.14159./( (100-x).*c)).*(1-1./8./( (100-x).*c)-3./128./( (100-x).*c).^2-15./1024./ ((100-x).*c).^3))./2+1./sqrt(((100-x).*c)+1)./2
elseif ( b.*x > 1) & (c.* (100-x)<=1)
f1 = a.*((sqrt(2./3.14159./(x.*b)).*(1-1./8./(x.*b)- 3./128./(x.*b).^2-15./1024./ (x.*b).^3))./2+1./sqrt((x.*b)+1)./2) + a.*((1-((100-x).*c)/2+((100-x).*c).^2./4- 5.*( (100-x).*c).^3/48+7.*( (100-x).*c).^4./192) ./2+1./sqrt(((100-x).*c)+1)./2)
else
f1 = a.*((sqrt(2./3.14159./(x.*b)).*(1-1./8./(x.*b)- 3./128./(x.*b).^2-15./1024./ (x.*b).^3))./2+1./sqrt((x.*b)+1)./2) ++ a.*((sqrt(2./3.14159./( (100-x).*c)).*(1-1./8./( (100-x).*c)-3./128./( (100-x).*c).^2-15./1024./ ((100-x).*c).^3))./2+1./sqrt(((100-x).*c)+1)./2)
end
end
x =[ ..
]
y =[ ..
]
ft = fittype(' piecewiseLine(x,a,b,c)' )
f = fit( x, y, ft, 'StartPoint', [0.001 0.0001 0.01] )
figure
plot(f, x, y )
error message :
エラー: fit>iFit (行 348)
複素数値がモデル関数で計算されました。近似を続けることはできません。
係数の上限と下限を使用するか、範囲を狭めてみてください。
エラー: fit (行 116)
[fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ...

Answers (0)

Categories

Tags

Asked:

on 27 Jul 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!