Matlab数据处理之累积梯形数值积分cumtrapz函数

4.7
(3)

Matlab中,可以使用cumtrapz函数表示一组数据的累积梯形数值积分。累积梯形数值积分,通过梯形法按单位间距计算近似累积积分。关于梯形数值积分trapz函数的用法,可以参考文章:《Matlab数据处理之梯形数值积分函数trapz》。

Matlab数据处理之累积梯形数值积分cumtrapz函数

本文主要介绍cumtrapz函数的常见用法、语法说明,以及一些常用实例。cumtrapz的帮助文档如下:

>> help cumtrapz
 cumtrapz Cumulative trapezoidal numerical integration.
    Z = cumtrapz(Y) computes an approximation of the cumulative
    integral of Y via the trapezoidal method (with unit spacing).  To
    compute the integral for spacing different from one, multiply Z by
    the spacing increment.
 
    For vectors, cumtrapz(Y) is a vector containing the cumulative
    integral of Y. For matrices, cumtrapz(Y) is a matrix the same size as
    X with the cumulative integral over each column. For N-D arrays,
    cumtrapz(Y) works along the first non-singleton dimension.
 
    Z = cumtrapz(X,Y) computes the cumulative integral of Y with respect
    to X using trapezoidal integration.  X and Y must be vectors of the
    same length, or X must be a column vector and Y an array whose first
    non-singleton dimension is length(X).  cumtrapz operates across this
    dimension.
 
    Z = cumtrapz(X,Y,DIM) or cumtrapz(Y,DIM) integrates along dimension
    DIM of Y. The length of X must be the same as size(Y,DIM)).
 
    Example: If Y = [0 1 2
                     3 4 5]
 
    then cumtrapz(Y,1) is [0   0   0    and cumtrapz(Y,2) is [0 0.5 2
                           1.5 2.5 3.5]                       0 3.5 8];
 
    Class support for inputs X,Y:
       float: double, single

cumtrapz函数常见用法

Q = cumtrapz(Y)
Q = cumtrapz(X,Y)
Q = cumtrapz(___,dim)

cumtrapz函数语法说明

Q = cumtrapz(Y) 通过梯形法按单位间距计算 Y 的近似累积积分。Y 的大小确定求积分所沿用的维度:

  • 如果 Y 是向量,则 cumtrapz(Y) 是 Y 的累积积分。
  • 如果 Y 是矩阵,则 cumtrapz(Y) 是每一列的累积积分。

如果 Y 是多维数组,则 cumtrapz(Y) 对大小不等于 1 的第一个维度求积分。

Q = cumtrapz(X,Y) 根据 X 指定的坐标或标量间距对 Y 进行积分。

  • 如果 X 是坐标向量,则 length(X) 必须等于 Y 的大小不等于 1 的第一个维度的大小。
  • 如果 X 是标量间距,则 cumtrapz(X,Y) 等于 X*cumtrapz(Y)。

Q = cumtrapz(_,dim) 使用上述任意语法沿维度 dim 求积分。必须指定 Y,也可以指定 X。如果指定 X,则它可以是长度等于 size(Y,dim) 的标量或向量。例如,如果 Y 是矩阵,则 cumtrapz(X,Y,2) 对 Y 的每一行进行累积积分。

cumtrapz函数实例

按单位间距计算向量的累积积分

计算数据点间距为 1 的向量的累积积分。

创建数据的数值向量。

Y = [1 4 9 16 25];

Y 包含 f(x)=x2 在域 [1 5] 中的函数值。

使用 cumtrapz 按单位间距对数据求积分。

>> Q = cumtrapz(Y)

Q =

         0    2.5000    9.0000   21.5000   42.0000

此近似积分最后得出的值为 42。在这种情况下,确切答案有些小,41+1/3。cumtrapz 函数高估积分值,因为 f(x) 是向上凹的。

采用非单位间距对数据向量求积分

计算数据点间距均匀但不等于 1 的向量的累积积分。

创建域向量。

X = 0:pi/5:pi;

计算 X 的正弦值。

Y = sin(X');

使用 cumtrapz 计算 Y 的累积积分。当点之间的间距不变但不等于 1 时,为 X 创建向量的替代方法是指定标量间距值。在这种情况下,cumtrapz(pi/5,Y) 与 pi/5*cumtrapz(Y) 相同。

>> Q = cumtrapz(X,Y)

Q =

         0
    0.1847
    0.6681
    1.2657
    1.7491
    1.9338
Matlab数据处理之累积梯形数值积分cumtrapz函数

采用非均匀间距对矩阵进行累积积分

对具有非均匀数据间距的矩阵的行进行累积积分。

创建一个 x 坐标向量和一个按不规则间隔测得的观测值矩阵。Y 中的行代表在 X 中各时间处测得的速度数据,分别来自三次不同的试验。

>> X = [1 2.5 7 10];
>> Y = [5.2   7.7   9.6   13.2;
     4.8   7.0  10.5   14.5;
     4.9   6.5  10.2   13.8];

使用 cumtrapz 分别对每一行进行积分,然后求出每个试验的累积行程距离。由于数据不是按固定间隔计算的,因此指定 X 来表示数据点之间的间距。由于数据位于 Y 的行中,因此指定 dim = 2

>> Q1 = cumtrapz(X,Y,2)

Q1 =

         0    9.6750   48.6000   82.8000
         0    8.8500   48.2250   85.7250
         0    8.5500   46.1250   82.1250
Matlab数据处理之累积梯形数值积分cumtrapz函数

结果为一个大小与 Y 相同的矩阵,其中包含每一行的累积积分。

多次累积积分

在 x 和 y 方向执行嵌套积分。绘制结果,以可视方式显示两个方向上的累积积分值。

创建一个由域值构成的网格。

x = -2:0.1:2;
y = -2:0.2:2;
[X,Y] = meshgrid(x,y);

计算网格上的函数 f(x,y)=10x2+20y2

F = 10*X.^2 + 20*Y.^2;

cumtrapz 对数值数据而不是函数表达式求积分,因此要对数据矩阵使用 cumtrapz,通常无需了解基础函数。在已知函数表达式的情况下,您可以改用 integralintegral2 或 integral3

使用 cumtrapz 求二重积分的近似值

Matlab数据处理之累积梯形数值积分cumtrapz函数

要执行此二重积分,请使用 cumtrapz 的嵌套函数调用。内部调用首先对数据的行进行积分,然后外部调用对列进行积分。

I = cumtrapz(y,cumtrapz(x,F,2));

绘制表示原始函数的曲面以及表示累积积分的曲面。累积积分曲面上的每个点都给出了二重积分的中间值。I 中的最后一个值给出了二重积分的总体逼近值,I(end) = 642.4。用一个红色的星形在图上标记此点。

surf(X,Y,F,'EdgeColor','none')
xlabel('X')
ylabel('Y')
hold on
surf(X,Y,I,'FaceAlpha',0.5,'EdgeColor','none')
plot3(X(end),Y(end),I(end),'r*')
hold off
Matlab数据处理之累积梯形数值积分cumtrapz函数

共计3人评分,平均4.7

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/5712.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2023年04月11日 20:04
下一篇 2023年04月13日 20:20

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号