Integral2 of a dot product
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Below is what I have:
Z=@(x,y) x+1i*y;
T=@(x,y) ((sinh(pi/ha*(Z(x,y)-1i*ha/2))).^2);
E=@(x,y) conj(1i*pi*V/ha*1/(K_ka_p)*sqrt((TC-TA)./(T(x,y)-TA)));
E_conj=@(x,y) conj(E(x,y));
Int=@(x,y) dot(E(x,y),(E_conj(x,y)))
Interaction=integral2(Int,0,1,0,1);
When I run the code, I get the error "Integrand output size does not match the input size." I can get integral2 of all the functions leading up to Int. Just the Int function results in error. Anyone out there knows how to resolve this issue? Thank you!
0 comentarios
Respuestas (1)
Walter Roberson
el 11 de Ag. de 2018
"Integrand, specified as a function handle, defines the function to be integrated over the planar region xmin ≤ x ≤ xmax and ymin(x) ≤ y ≤ ymax(x). The function fun must accept two arrays of the same size and return an array of corresponding values. It must perform element-wise operations."
Your E(x,y) and E_conj(x,y) parts appear to handle that okay, but when you dot() those two arrays you get a single result instead of element-wise computation. Perhaps you should just be using .* instead of dot()
6 comentarios
Neelima Dahal
el 20 de Ag. de 2018
Editada: Walter Roberson
el 20 de Ag. de 2018
Walter Roberson
el 20 de Ag. de 2018
Int1=@(x,y) (E_conj1(x,y).*(E_conj1(x,y)));
It would look to me more efficient to use
Int1=@(x,y) E_conj1(x,y).^2;
But your original had E dot E_conj, so it is not clear to me that the new Int1 calculates what you had wanted to calculate.
Ver también
Categorías
Más información sobre Numerical Integration and Differentiation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!