Integral of user-defined function

7 vues (au cours des 30 derniers jours)
Vishakha Ramani
Vishakha Ramani le 4 Juin 2023
I have the following MATLAB code, and would like to evaluate the integral of compcdf_mgc function with respect to variable y. However, I'm getting the following error: "Unable to perform assignment because the left and right sides have a different number of elements."
rate = 1;
num_steps = 2;
num_proc = num_steps;
f = @(y) compcdf_mgc(num_steps, rate, num_proc, y);
integral_value = integral(f, 0, Inf);
function final = compcdf_mgc(num_steps, rate, c, y)
n = num_steps;
scale = 1/rate; % this is b = 1/lambda
compcdfvec = zeros(n, 1);
for i = 1:n
compcdfvec(i) = 1 - gamcdf(y, n+i, scale);
end
final = ((1/n)*sum(compcdfvec))^c;
end

Réponse acceptée

Torsten
Torsten le 4 Juin 2023
Modifié(e) : Torsten le 4 Juin 2023
Your function is not vectorized. Thus you have to use
integral_value = integral(f, 0, Inf, 'ArrayValued',true)
instead of
integral_value = integral(f, 0, Inf)
  1 commentaire
Vishakha Ramani
Vishakha Ramani le 4 Juin 2023
Thank you. This worked!

Connectez-vous pour commenter.

Plus de réponses (1)

John D'Errico
John D'Errico le 4 Juin 2023
Is your code vectorized? That is, what happens when a VECTOR of elements for y is passed in? (It does not appear to be.)
integral assumes a vectorized function.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by