前期用到了一些函数,但是忘记了整理,从现在开始整理。
1.cumtrapz:用这个函数进行离散数据积分是可行的,但是使用trapz求积分却不行(这里我针对trapz定义了区间,但是出来的线段不对劲),是这两个函数的区别导致的错误吗?还是我trapz使用错误?
答:trapz只有最终值,而cumtrapz是每多一个就有一个的结果,
2.对于数值积分的总结:(摘自mathwork):
trapz:梯形数值积分
https://ww2.mathworks.cn/help/matlab/ref/trapz.html#d120e1202519
Q = trapz(Y) 通过梯形法计算 Y 的近似积分(采用单位间距)。Y 的大小确定求积分所沿用的维度:
如果 Y 为向量,则 trapz(Y) 是 Y 的近似积分。
如果 Y 为矩阵,则 trapz(Y) 对每列求积分并返回积分值的行向量。
如果 Y 为多维数组,则 trapz(Y) 对其大小不等于 1 的第一个维度求积分。该维度的大小变为 1,而其他维度的大小保持不变。
Q = trapz(X,Y) 根据 X 指定的坐标或标量间距对 Y 进行积分。
如果 X 是坐标向量,则 length(X) 必须等于 Y 的大小不等于 1 的第一个维度的大小。
如果 X 是标量间距,则 trapz(X,Y) 等于 X*trapz(Y)。
Q = trapz(___,dim) 使用以前的任何语法沿维度 dim 求积分。必须指定 Y,也可以指定 X。如果指定 X,则它可以是长度等于 size(Y,dim) 的标量或向量。例如,如果 Y 为矩阵,则 trapz(X,Y,2) 对 Y 的每行求积分。
3.cumtrapz:
https://ww2.mathworks.cn/help/matlab/ref/cumtrapz.html
Q = cumtrapz(Y) 通过梯形法按单位间距计算 Y 的近似累积积分。Y 的大小确定求积分所沿用的维度:
如果 Y 是向量,则 cumtrapz(Y) 是 Y 的累积积分。
如果 Y 是矩阵,则 cumtrapz(Y) 是每一列的累积积分。
如果 Y 是多维数组,则 cumtrapz(Y) 对大小不等于 1 的第一个维度求积分。