저는 lsqcurvefit을 사용하여 일부 작업을 수행하려고합니다.matlab : lsqcurvefit 및 매개 변수
function F = cdf_3p_model(a,data)
F=1-((1-a(5)-a(6)).*(exp(-abs(data)./a(1)))+((1-a(4)-a(6)).*(exp(-abs(data)./a(2))))+((1-a(4)-a(5)).*(exp(-abs(data)./a(3)))));
및
function [a residual] = cdf_fit_3p(x,y)
a0 = [10 1 0.1 0.3 0.3 0.3];
lb = [0 0 0 0 0 0];
ub = [];
curvefitoptions = optimset('Display','final','MaxFunEvals',100000,'MaxIter',50000);
[a, residual] = fmincon(@cdf_3p_model,a0,x,y,lb,ub,curvefitoptions);
end
내가 초기 매개 변수, UB를 설정, 파운드하지만 어떻게 나는 또한 그 선언 않는다 : 나는 그런 기능이
이
a(1) > a(2) > a(3)
a(5) + a(6) +a(7) = 1
답변 해 주셔서 감사합니다. 그것은 아주 쉽게 들리 겠지만, 방금 matlab에 시작했고 솔직히 "모델과 데이터의 차이점에 대한 L2 표준을 취함으로써 최소 제곱을 통합하는 방법"을 알지 못했습니다. :) 좀 더 많은 힌트를 주시겠습니까? ? – Art
아마도 내가 너무 기술적이었습니다. 데이터의 실제 값이 벡터 형식으로 'F'에서 발견되고 피팅을 통한 모델 근사가 'Fm'이라고 가정합니다. 최소 제곱의 목적은 F와 Fm 사이의 거리 (특히 "유클리드")를 최소화하는 것입니다. [유클리드 표준] (http://en.wikipedia.org/wiki/Euclidean_norm#Euclidean_norm) 위키 피 디아의 호의를 참조하십시오. 따라서 궁극적으로 fmincon에 표준을 반환하면 최소화하기 위해 노력할 것이며, 따라서 제약 조건에 대한 추가 힌트로 LS- 근사값 – Rasman
을 수행합니다. function [c, ceq] = curvefitoptions (x). 'c = [x (2) -x (1); x (5) + x (6) + x (7) -1 ' – Rasman