在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本身返回的几个句子,找到大于某个当量值的面积是比较简单的。