2014-11-08 8 views
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)) 

모든 도움을 주시면 감사하겠습니다.

+0

당신 유무 : 아마 문제가 fun2는 벡터화 입력을 할 수 없다는 것입니다, 그것은 fun2 (cfitObject)는 벡터 입력을 처리 할 수 ​​있도록 수정하거나 적분에서 함수가 배열이 가치가 소프트웨어를 말함으로써 해결 될 수있다 'y = integral (fun3,0,35, 'ArrayValued', 1);을 시도했습니다. – Arpi

답변

0

코드가 괜찮은 것 같습니다.

y = integral(fun3, 0, 35, 'ArrayValued', 1);