在 Matlab 上使用 fminsearch 求最小圆

Using fminsearch on Matlab for Smallest Circle

我的作业是计算最小的圆。第一部分要求我计算欧几里德距离,我用以下代码解决了这个问题:

function euclidean = center(x, y)
maximaldist = 0;
rng(0, 'twister')
A= randi([0 10],10,2)
for i=1:size(A,1)
    euclidean=sqrt((x-A(i)).^2 + (y-A(i+size(A,1))).^2);
    if euclidean > maximaldist
        maximaldist = euclidean;
    end
end

对于第二部分,我需要继续使用 fminsearch,但由于某些原因我无法在代码中实现它(我可以从命令 window 中使用它)。谁能帮我解决这个问题?

编辑:所以我试过了...

基本上我能找到的所有东西。

for i=1:size(A,1)
fun=@(x) sqrt((x(1)-A(i)).^2 + (x(2)-A(i+size(A,1))).^2);
end
x0=[0 0];
fminsearch(fun, x0)
end

这是我绝望地对 fminsearch 部分进行了处理。

然后我把代码改成了这样;所以我可以尝试以下方法;

function euclidean = denneme(x,y)
%point_x=point(1);
%point_y=point(2);
rng(0, 'twister')
a= randi([0 10],10,1);
b= randi([0 10],10,1);
distance=sqrt((x-a).^2 + (y-b).^2);
euclidean=max(distance);
f= @(x) denneme(x(1),x(2));
fminsearch(f, [0 0])

但它说输入参数不足。我已经尝试了很多东西并删除了很多东西,所以我无法进行很多试验。

如果您发布您已经尝试过的内容并描述您 运行 遇到的问题,将会有所帮助。

编辑:在这里,你是否重载了 center 函数?我很好奇那个代码 运行.