如何使用MATLAB计算曲线下的部分区域?

时间:2015-05-27 23:03:12

标签: matlab area

我是matlab的新手,试图找到曲线下面的区域(AUC),而不是整个图形。我有兴趣从2个地区计算单独的AUC;在x轴上存在一个从-350到-100,另一个从-100到+150。如何计算图形的这些部分的AUC(不是整个x轴)?没有足够的声誉来提供这个数字。如果社区中的某个人可以提供matlab代码。

数据集中的每个值都对应于x,y坐标。如果绘制,这些点会生成单独的(x,y)曲线,其中x是-750到+750的固定列。
y数据有N行,类似

x = [-750:25:750];

y1 = [1.52,0.47,0.59,0.62,1.88,...];    
y2 = [1.5,0.79,0.74,1.46,0.6,...];  
y3 = [1.6,0.11,0.79,0.77,1.33,...];

yn = [0.061,0.0609,0.05948,0.0624,0.067,0.073347639,...];

...未提供完整数据集。

我想计算-300到-100区域的AUC和x轴上存在的-100到+150区域,对于(x,y)的每个组合,比如说(x,y1),(x,y2) )..

1 个答案:

答案 0 :(得分:1)

尝试这样的事情(使用trapz):

startingIndex = find(x==-350);
endingIndex = find(x==-100);

desiredX = x(startingIndex:endingIndex);
desiredY = y1(startingIndex:endingIndex);
area = trapz(desiredX,desiredY);

http://www.mathworks.com/matlabcentral/newsreader/view_thread/278102

上找到

基本上它会找到x数组中端点的索引,然后从相应的截断y向量中计算曲线下的区域。