Используя встроенную функцию trapz
в MATLAB, вы можете выполнить именно это. Вот пример:
>> x = -3:.1:3;
y = -5:.1:5;
z = -10:0.1:10;
[X,Y,Z] = meshgrid(x,y,z);
F = X.^2 + Y.^2 + Z.^2;
I = trapz(y,trapz(x,F,2));
I = squeeze(I);
Что я делаю это создание сетки сетки из моих точек данных, представленной в нижнем регистре x,y,z
и оценку функции, в данном случае X^2+y^2+Z^2
. Для этого у вас уже есть альтернативные данные. Имейте в виду, что вы всегда можете использовать griddata
для равномерного распределения данных.
Затем я использую trapz
дважды, чтобы интегрировать размеры x и y. trapz
специально определенно интегрируется только по размеру первой матрицы, который не равен 1, что позволяет мне это сделать (см. Здесь: http://www.mathworks.com/help/matlab/ref/trapz.html).
Наконец, я использую сжатие данных для удаления всех размеров синглтона и возврата вектора. Если я сюжет данные по оставшейся размерности я получаю:
>> plot(z,I);
По сравнению с моей первоначальной функцией, если интегрированной аналитический между -3 <= x <= 3
и -5 <= y <= 5
я получаю: 680 + 60 z^2
. Оба согласны.
Подумайте о Фубини: вы сначала интегрируете на y (и получаете функцию (x, z)), а затем на z. –
Что такое неравномерная сетка? –
Его случай, когда расстояние между двумя точками не равномерно. –