How to integrate a plot over specified range?
62 次查看(过去 30 天)
显示 更早的评论
Hi everyone.
I want to integrate a plot over specified range. i have two seperate arrays i.e. x(t) and y(x) which i already have in a plot. now i want to integrate y(x) over x(t) from x(t1) to x(t2), the area under y(x) over this specified range.
To get a better view, let me elaborate with an example:
t = 0:0.1:2*pi;
x = sin(t);
y = cos(x);
Now the question is how to calculate ∫y.dx from x(t=1) to x(t=2).
best regards
0 个评论
采纳的回答
MS
2019-9-22
编辑:MS
2019-9-22
You can use the integral function to numerically integrate a function from xmin to xmax. Example:
% define functions
fun_x = @(t) sin(t);
fun_y = @(x) cos(x);
% assign the time interval
t1 = 1;
t2 = 2;
% evaluate function x
xmin = feval(fun_x,t1);
xmax = feval(fun_x,t2);
% integrate
q = integral(fun_y,xmin,xmax);
disp (q);
>>> Output:
0.0434
Hope this helps.
4 个评论
更多回答(1 个)
Rik
2019-9-22
编辑:Rik
2019-9-22
As you indicated with the tags, using trapz is also an option.
fun_x_of_t=@(t) sin(t);
fun_y_of_x=@(x) cos(x);
fun_y_of_t=@(t) fun_y_of_x(fun_x_of_t(t));
t=linspace(1,2,100);
x=fun_x_of_t(t);
y=fun_y_of_t(t);
trapz(x,y)
2 个评论
Rik
2019-9-22
As long as you have the xy paired data, you can use trapz. If you don't have x (or it is impossible to derive x from t) what you want is imposible.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!