在 Matlab 中找到固定区间上的两个变量函数的最小值和最大值,并使用该函数在同一图中绘制这些点

亚姆斯

我在下面有这个函数,我需要计算这个函数 U 的最小值和最大值,并在 3D 图形中与函数一起绘制最大值和最小值。

我该如何编写代码?


[x,y]=meshgrid(0:0.1:pi,0:0.1:2*pi);% x-theta,y-phi

a=90.7;b=36.2;c=12.9; 
E=1.44;

U=-E.^2*(a.*sin(x).^2.*cos(y).^2+b.*sin(x).^2.*sin(y).^2+c.*cos(x).^2);

meshc(x,y,U)

xlabel('\theta')
ylabel('\Phi ')

zlabel('U')

我厌倦了这种方式来找到最大值,但我不知道我是否做对了

max(U,[],1) %max row-wise
max(U,[],2) %max column-wise

对于最小值,它没有采用相同的想法,我也没有得到最大值的确切值

如上所述,要简单地找到采样函数的最大值/最小值,请使用m = min(U(:)); M = max(U(:)). 为了能够绘制它们,您缺少的是为您提供这些值的坐标。为此,您将需要min/max 函数第二个输出,它为您提供发生极端情况的索引。

一种可能的实现(可能不是最好的)是(可能无法完美运行,我手头没有 matlab):

[Ms,I] = max(U,[],1); %row-wise maximum and their indexes
[M,j] = max(Ms); %maximum among all rows and its index

现在i = I(j)是最大值的位置。您最终可以plot3(x(i,j),y(i,j),U(i,j),'ro')在最大值位置或任何您喜欢的位置绘制一个大红色圆圈。

注意:我可能把它倒过来,也可能是x(j,i),等等。只是检查。当然,您可以对min().

编辑:我只记得ind2sub函数,它解决了你所有的问题。遵循上面使用的语法:

[M,ind] = max(U(:));
[i,j] = ind2sub(size(U),ind)

其余保持不变。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章