我想对具有某些峰值的(河流波)的时间序列数据进行积分,但是我只需要对最高峰值进行积分。
我有一个积分应满足的预定义区域,并且我更改了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)] )
结果:
如果应用于具有多个峰的数据。
摘要:
我如何确保只有最大的峰被积分截止?
如何防止Ai
包含其他峰并仍然接近目标?