2011-08-08 36 views
1

可能重複:
How do I do numerical integration of a vector in MATLAB?如何在MATLAB中以數字方式集成曲線?

我有一個x-y數據集(見圖),但我沒有數據的基本功能,所以我不能使用符號積分。有沒有簡單的方法來整合曲線的數字?

我能想到的唯一方法是使用evey y-value的for循環乘以相鄰兩點之間的增量x?還有其他方法可以做到嗎?

enter image description here

+1

檢查出[TRAPZ](http://www.mathworks.com/help/techdoc/ref/trapz.html)函數:'trapz(X,Y)' – Amro

回答

2

你應該看着像龍格 - 庫塔或Burlish-Stoer的集成方案。你會想要一些使用可變增量的東西,所以你可以使用一個更大的步驟,其中功能是平坦的,一個較小的步驟可以捕獲這些峯值。

+1

這聽起來像原始海報以採樣數據的形式具有其功能,在這種情況下,這將不起作用。 – nibot

+0

如果他適當地選擇了點,它可以工作。當沒有什麼變化時,爲什麼堅持要循環很多點?完全有可能。 – duffymo

3

trapz可能是你在找什麼:

TRAPZ梯形數值積分。

Z = TRAPZ(X,Y) computes the integral of Y with respect to X using 
the trapezoidal method. X and Y must be vectors of the same 
length, or X must be a column vector and Y an array whose first 
non-singleton dimension is length(X). TRAPZ operates along this 
dimension.