trapz功能仅适用于有限的x范围

时间:2019-05-07 15:27:33

标签: matlab integration area

我想对具有某些峰值的(河流波)的时间序列数据进行积分,但是我只需要对最高峰值进行积分。

我有一个积分应满足的预定义区域,并且我更改了y轴阈值以实现该区域。

上一个问题更详细地描述了原始问题:Integration returning required y value for predefined area。 在Wolfie的帮助下,开发了代码来解决这个问题。

现在的问题是,当我不愿意的时候,我还整合了其他峰。

到目前为止的代码:

x = Q(:,1); %
y = Q(:,2); %

target = 17.4e+06;  % Target area = Polder Volume

yi = max( y );      % Initialise yi to be max possible y
dy = 10;            % Step change in yi

Ai = 0;             % Area first iteration
thresh = 10000;     % Threshold for stopping loop
while target - Ai > thresh && yi >= min(y)
    yi = yi - dy;
    ix = y >= yi;
    % Approximate integral above the line
    Ai = trapz( x(ix), y(ix) - yi );
end
figure(e); clf; hold on

plot( x, y );
patch( x(ix), y(ix), [1,0.5,0.5], 'facealpha', 0.5 );
plot( x, ones(size(x))*yi, '--', 'linewidth', 2 )
xlim( [min(x),max(x)] ) 

结果:

integral

如果应用于具有多个峰的数据。

摘要:

我如何确保只有最大的峰被积分截止? 如何防止Ai包含其他峰并仍然接近目标?

0 个答案:

没有答案