integration with limits using an array
6 次查看(过去 30 天)
显示 更早的评论
I am trying to integrate an equation and it works when I do not have limits but when I add them it does not work.
u_wake is a 1x56 array, rho is a constant and 0.07 and 0.13 are the limit boundaries.
This works when I use this:
Drag = rho*trapz(u_wake.*(21.15-u_wake));
But not when I do this:
Drag = rho*trapz(u_wake.*(21.15-u_wake),0.07,0.13);
3 个评论
the cyclist
2022-10-6
It's unclear to me why you can't just upload u_wake, which is just a 1x56 vector.
Also, that is not the complete error message, which I am guessing looks something more like ...
Error using matlab.internal.math.getdimarg
Dimension argument must be a positive integer scalar within indexing range.
Error in trapz>getDimArg (line 90)
dim = matlab.internal.math.getdimarg(dim);
Error in trapz (line 36)
dim = min(ndims(y)+1, getDimArg(dim));
Error in wake_scan_sample (line 35)
Drag = rho*trapz(u_wake.*(21.15-u_wake),0.07,0.13);
回答(1 个)
the cyclist
2022-10-6
Looking at the documentation for trapz, it doesn't seem like the syntax you are trying to use is valid.
2 个评论
the cyclist
2022-10-6
I assume that u_wake is the "y" value of the integral. Are 0.07 and 0.13 the endpoints of the "x" value? Are the values of u_wake at evenly spaced points along x? Then
Drag = rho*trapz(linspace(0.07,0.13,length(u_wake)),u_wake.*(21.15-u_wake));
should calculate what you want. For example,
% I just made up some u_wake and rho data
u_wake = sort(rand(1,56));
rho = 1;
Drag = rho*trapz(linspace(0.07,0.13,length(u_wake)),u_wake.*(21.15-u_wake))
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!