在Matlab中求一个固定区间上的二元函数的最小值和最大值,并用该函数将这些点绘制在同一个图中

在Matlab中求一个固定区间上的二元函数的最小值和最大值,并用该函数将这些点绘制在同一个图中,matlab,optimization,arguments,max,fminsearch,Matlab,Optimization,Arguments,Max,Fminsearch,我在下面有这个函数,我需要计算这个函数U的最小值和最大值,还需要在3D图形中与函数一起绘制最大值和最小值 如何编写代码 我想尽办法找到max,但我不知道我是否做对了 max(U,[],1) %max row-wise max(U,[],2) %max column-wise 对于最小值,它不起同样的作用,我也没有得到最大值的确切值 max(max(U)) 这将找到2D矩阵的最大值。 对于最小值,您只需将max替换为min.如上所述,要简单地找到采样函数的最大值/最小值,请使用m=min(

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

如何编写代码



我想尽办法找到max,但我不知道我是否做对了

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

对于最小值,它不起同样的作用,我也没有得到最大值的确切值

max(max(U))
这将找到2D矩阵的最大值。
对于最小值,您只需将max替换为min.

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

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

现在
i=i(j)
是最大值的位置。最后,您可以使用
绘图3(x(i,j)、y(i,j)、U(i,j)、'ro')
在最大值位置绘制一个大的红色圆圈,或者您喜欢的任何东西

注意:我可能会把它倒过来,它可能是
x(j,I)
,等等。检查一下。当然,对于
min()
,您也可以做同样的事情

编辑:我刚想起这个函数,它解决了你所有的问题。按照上面使用的语法:

[M,ind] = max(U(:));
[i,j] = ind2sub(size(U),ind)
其余的保持不变。

max(U(:)
更好
[Ms,I] = max(U,[],1); %row-wise maximum and their indexes
[M,j] = max(Ms); %maximum among all rows and its index
[M,ind] = max(U(:));
[i,j] = ind2sub(size(U),ind)