MATLAB: Error when calling parameterized function

functionfunctionsintegralintegrationparameterized

Here is my main body code:
d = .0127;
a = .00635;
x = d/a;
val = scalingfunction(x)
Here is my function code:
function [val] = scalingfunction(x)
fun = @(x,y) ((1/(y^2+1)^(3/2))-(1/((y+x)^2 + 1))^(3/2))^2;
val = integral(@(y) fun(x,y),-Inf,Inf);
end
Here is my error:
val = integral(@(y) fun(x,y),-Inf,Inf);
Error in electro_magnetic_model (line 4)
val = scalingfunction(x);

Best Answer

Use element-wise operations:
function [val] = scalingfunction(x)
fun = @(x,y) ((1./(y.^2+1).^(3/2))-(1./((y+x).^2 + 1)).^(3/2)).^2;
val = integral(@(y) fun(x,y),-Inf,Inf);
end
that then produces:
val =
1.700680101619312
See Array vs. Matrix Operations for a detailed description.