Using a vector input in integral function.

21 views (last 30 days)
Let's say I have a function "myfun" of variable x and its integral:
myfun = @(x) x; % A continuous function of variable x (exist for any x value between integration limit, 1 to 5)
myfunint = integral(myfun,1,5); % integration between x=1 and x=5
Now I have a vector which is also a function of this same variable x (but it's a vector!)
myvec= [0.5 1.5 2.5 3.5 4.5]; % values corresponding to x = 1,2,3,4,5
and my new function "myfunnew" is a multiplication of myvec with myfun..something like
myfunNew = @(x) myvec(x).*x; % Not continuous because myvec(x) only exists for certain x values (x=1,2,3...5) and not for values inbetween.
myfunNewint = integral(myfunNew,1,5)
and I want to use integral function on myfunNew.
But it won't work because "myvec" is a vector and "myvec(x)" doesn't exist for a lot of values of x between 1 and 5 that may be required by integral function when it evaluates integral. So my question is:
  • How can I convert this vector "myvec" to a continuous function (preferably using linear interpolation for missing values) so that I can use it in "myfunNew" such that it becomes integrable.
I can not use trapz.
  2 Comments
madhan ravi
madhan ravi on 30 Jul 2020
Why not use ArrayValued option to true?
fizzy
fizzy on 30 Jul 2020
Because that's not what I need. The result of integration, myfunNewint, will be a single value.

Sign in to comment.

Accepted Answer

Alan Stevens
Alan Stevens on 31 Jul 2020
Like this?
X = 1:5;
myvec= [0.5 1.5 2.5 3.5 4.5]; % values corresponding to x = 1,2,3,4,5
vec =@(x) interp1(X,myvec,x); % linear interpolation
myfunNew = @(x) vec(x).*x;
myfunNewint = integral(myfunNew,1,5)
  1 Comment
fizzy
fizzy on 31 Jul 2020
Exactly! This is so simple. I guess I wasn't using the correct words in google search

Sign in to comment.

More Answers (0)

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!