Каков канонический способ интеграции одного массива в другой?
рассмотрим два массива:
x = [0 .05 .1 .3 .32 .4 .55 .7 1 1.3 1.4 1.45 1.6 1.8 1.9 2 2.2 2.3 2.6 2.8 2.91 3];
y = x.^2;
Я хочу интегрировать
y
над
x
. Пока я понял, что могу использовать
trapz()
функция в цикле for:
y1 = zeros(length(x));
for ii = 1:length(x)
y1(ii) = trapz(x(1:ii), y(1:ii));
end
plot(x, y1, x, y);
Однако мне было интересно, есть ли канонический способ сделать это без использования цикла for.
PS1. Я полагаю, что MATLAB / Octave - это векторизованные функции, и должны быть предопределенные функции, которые позаботятся об этом.
PS2.У меня сейчас нет лицензии MATLAB, но ответ должен быть совместим как с MATLAB, так и с Octave.
2 ответа
Решение
Похоже, ты хочешь <tcode id="4259801"></tcode>функция :
y1 = zeros(length(x), 1);
y1 = cumtrapz(x, y)
plot(x, y1, x, y);
Вы можете использовать
cumsum
и
diff
:
y1 = [0 cumsum((y(1:end-1) + diff(y)/2) .* diff(x))];