функция trapz только для ограниченного диапазона х - PullRequest
0 голосов
/ 07 мая 2019

Я хочу интегрировать данные временных рядов (речной волны), которые имеют определенные пики, но мне нужен только интеграл для самого высокого пика.

У меня есть предопределенная область, которой должен удовлетворять интеграл, и я изменяю порог по оси 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)] ) 

Результаты:

integral

Применительно к данным с несколькими пиками.

В итоге:

Как я могу убедиться, что интеграл отсекает только самый большой пик? Как я могу предотвратить включение Ai в другие вершины и при этом приблизиться к цели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...