0
저는 Matlab에서 두 개의 함수 핸들을 통합하려고합니다. 첫 번째 함수 핸들은와 이블 확률 밀도 함수이고 두 번째 함수 핸들은 단일 점의 선형 보간을 사용하여 작성한 cfit을 기반으로합니다.어떻게 cfit에서 함수 핸들을 만들고 다른 함수 핸들을 곱하여 용어를 통합합니까?
x = 0:0.1:35;
fun1 = @(x) wblpdf(x,weibullAlpha,weibullBeta);
fun2 = @(x) feval(cfitObject,x);
fun3 = @(x) (fun(x).*fun2(x));
y = integral(fun3,0,35); % Using quad(fun3,0,35) doesn't work either.
나는 다음과 같은 오류가 나타날 수
Error using integralCalc/finalInputChecks (line 515)
Output of the function must be the same size as the input. If FUN is an array-valued integrand,
set the 'ArrayValued' option to true.
Error in integralCalc/iterateScalarValued (line 315)
finalInputChecks(x,fx);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
Error in test (line 7) % "test" is the name of the script file.
y = integral(fun3,0,35);
코드 예와 잘 작동하기 때문에 문제는 "Fun2에"뭔가를해야합니다
fun2 = x.^2;
참고 : cfitObject로 fun2를 플롯하면 오류가 발생하지 않습니다. quad()를 사용하여 함수를 통합하는 것도 가능합니다.
x = 0:0.1:35;
fun2 = @(x) feval(cfitObject,x);
y = quad(fun2,0,35);
plot(x, fun2(x))
모든 도움을 주시면 감사하겠습니다.
당신 유무 : 아마 문제가
fun2
는 벡터화 입력을 할 수 없다는 것입니다, 그것은fun2
(cfitObject
)는 벡터 입력을 처리 할 수 있도록 수정하거나 적분에서 함수가 배열이 가치가 소프트웨어를 말함으로써 해결 될 수있다 'y = integral (fun3,0,35, 'ArrayValued', 1);을 시도했습니다. – Arpi