2017-03-23 10 views
1

Matlab의 일부 이산 데이터 포인트에서 함수의 적분 값을 계산해야합니다. 각 점의 절대 좌표는 다음과 같습니다. x = [1,2.65,3.25,3.33,15.65] y = [10,31,15, -6,1] trapz(x,y) 함수를 사용하려고했지만 x가 반드시 필요합니다. 데이터 포인트의 x 좌표가 아니라 데이터 포인트 사이의 간격입니다.Matlab의 이산 데이터 포인트에서의 적분

이러한 통합을 계산하는 가장 쉬운 방법은 무엇입니까?

답변

0

integral으로 1D에서 옵션으로 웨이 포인트를 지정할 수 있습니다. 2D 통합을 위해 integral2을 사용하면 불가능 해 보입니다.

또한 통합 점의 2D 사각형 격자가있는 것 같습니다.

그 경우에는 평균 간격 길이 (diff 통해)에 따라 가중치를 계산 한 다음 합계하십시오. 통합 그리드가 고정되어 있으므로 수치 적분의 정밀도는 제어 할 수 없으며 통합 할 함수에 따라 달라집니다.

% get grid 
x = [1, 3, 7, 15]'; 
y = [3, 6, 8]; 
[xi, yi] = ndgrid(x, y); 

% get weights 
h = diff(x, [], 1); 
wx = ([h; 1] + [1; h])/2; 
h = diff(y, [], 2); 
wy = ([h, 1] + [1, h])/2; 
w = wx * wy; 

% calculate function 
f = func(xi, yi); 

% integration is weighted summation 
int = sum(f(:) .* w(:)); 

테두리는 신중하게 처리해야합니다. 또한 좌표 목록을 정렬해야합니다.