Я хочу интегрировать данные временных рядов (речной волны), которые имеют определенные пики, но мне нужен только интеграл для самого высокого пика.
У меня есть предопределенная область, которой должен удовлетворять интеграл, и я изменяю порог по оси Y, чтобы достичь этой области.
Этот предыдущий вопрос более подробно описывает исходную проблему: Интеграция, возвращающая требуемое значение y для предварительно определенной области .
С помощью 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
в другие вершины и при этом приблизиться к цели?