Integrating a function including mvnpdf. Error: Input function must return 'double' or 'single' values. Found 'sym'.

3 views (last 30 days)
I want to integrate the function fun below. It consists of a variable X multiplied by the multi-variable pdf of X and the correlated variable Y.
I get the error message "Input function must return 'double' or 'single' values. Found 'sym'." (see below).
fun = @(Y,X) X .* mvnpdf([X Y],mu,sigma); %where mu is 1-by-2 and sigma is 2-by-2
u = @(Y) log(C) + Y; %where C is a scalar constant
test = integral2(fun,-inf,inf,-inf,u);
Error using integral2Calc>integral2t/tensor (line 231)
Input function must return 'double' or 'single' values. Found 'sym'.
When I let X and Y be independent, so replace mvnpdf(....) by the product of their marginal pdfs, it works (then I redefine the variables and use lognpdf). I believe the error comes from the fact that my function fun gives symbolic output, even when supplied with arguments:
ans =
2*exp(- (5*conj(X) - conj(Y))^2/48 - conj(Y)^2/2 - 261924464376925987/144115188075855872)
But why is this? Is this the reason I cannot integrate my function? Grateful for help! Thanks!

Answers (1)

Catalytic on 29 Oct 2019
Yes, that is the reason. Maybe you have made sigma or mu symbolic variables?
  1 Comment
ASKH on 30 Oct 2019
Thanks for your response! No, sigma and mu are numbers (doubles):
mu =
0 0
sigma =
1.0000 0.2000
0.2000 1.0000
Do you have any idea for why my function would not give numbers as output? Perhaps I need to restrict the (X,Y) to be only real? Why are their complex conjugates showing up? Or does the mvnpdf not have a closed form...?

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!