在matlab中使用contourf(X,Y,Z,5)绘制等高线后,如何计算小于某个值的面积(或两条等高线之间的面积)?

[X Y Z]=峰值;%生成一个二维高斯分布图面来替换你的数据。

[c h]=contourf(X,Y,Z,5);提取%时保存返回的c h。

hc=get(h,'儿童');%获取等值线填充对象

n =长度(HC);

v =零(n,1);

s =零(n,1);

对于i=1:n

x=get(hc(i),' xdata ');第% i个填充的对象x数据

y=get(hc(i),' y data ');第% i个填充的对象y数据

l =长度(x);

s(i)=sum((x([2:l,1]) - x)。*(y([2:l,1])+y))/2;%计算第I个填充对象的面积

v(i)=get(hc(i),' user data ');%获取第I个对象对应的等效值

结束

[v m n]=唯一(v);%查找具有相同值的对象

s=accumarray(n,s);%一起拼出他们的区域

v代表等值的等值线。

s代表等值线包围的面积大于这个等值部分。

我觉得你最后是想求两个等值之间的面积。

因此,可以找到大于某个值的面积和小于某个值的面积。

对于matlab本身返回的几个句子,找到大于某个当量值的面积是比较简单的。