matlab问题~如何在已给出方程的等高线图(contour)中标出peak,hollow和pass?

来源:百度知道 编辑:UC知道 时间:2024/05/28 16:25:14
如题,方程式已给出,比较复杂。。。。
要求画出该方程的等高线图(contour),并且在图中标出peak(峰值), hollow(最低点)和pass(鞍值)
嗯。。。补充一下,是在方程式已经给出的情况下,比方说是z=x^2+sin(x+y)*sinx
要求画等高线图,然后在图中用个小三角什么的标出peak, hollow和pass这几个点。
因为我记得[x,y,z]=peaks(50)给出的是一个random matrix。。。
还有。。。能不能用clabel做。。。
谢谢啦~~~

不好意思。。。我能问一句最后一步plot里面'bv'跟[0,0,0]都是什么意思么???因为我们老师要求画的图中心不在(0,0,0),而是在一个其它的点。。。

>> [x,y,z]=peaks(50);
>> contour(x,y,z,20)
>> hold on

>> minz=min(min(z));
>> [i,j]=find(z==minz);
>> minx=x(i,j);
>> miny=y(i,j);
>> plot(minx,miny,'bo','MarkerFaceColor',[0,0,0],'MarkerSize',12)

上面是做最小值,最大值也是一样的.
将上述的min(min(z))换成max(max(z))即可
至于鞍值,可能得费点尽(但只要你找到那个点.画图不是问题)

======================================================
修改后大致用能.我只做最小值,最大值等,自己做吧.

>> [x,y]=meshgrid(-pi:0.05:pi);
>> z=x.^2+sin(x+y).*sin(x);
>> [zc,h] = contour(x,y,z,12); clabel(zc,h)
hold on

minz=min(min(z));
[i,j]=find(z==minz);
minx=x(i,j);
miny=y(i,j);
plot(minx,miny,'bv','MarkerFaceColor',[0,0,0],'MarkerSize',10)

fdsf ds