私の宿題では、最小円を計算することになっています。最初の部分は、ユークリッド距離を計算するために私を必要とし、私は次のコードであることを管理する:私は関数fminsearchを使用して上に行くする必要がありますが、何らかの理由で私はそれを実装することはできません第二部のためMatlabで最小円を使用するfminsearchを使用する
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
コード(私はコマンドウィンドウからそれを使用することができます)。誰も私にこれを助けることができますか?
EDIT:ので、私が試したものを...
基本的に私は見つけることができるすべてのもの。
for i=1:size(A,1)
[email protected](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])
しかし、入力引数が不十分だと言います。私は非常に多くのことを試してきたので、それらの多くを削除したので、私は多くの試行に達することができません。
ああ、申し訳ありません。私は今試したことを追加するために編集中です。いくつかのケースでは、システムに過負荷がかかり、 "メモリ不足"エラーが発生します。場合によっては、入力引数が不十分なだけです。 – ewesninski
私はあなたがdennemeを定義しているのを見ましたが、私は終わりが見えないので、あなたはその部分を含めていないと仮定しています...それは 'denneme'が2つの入力を取り、あなたはそれを与えているようです。それはあなたの問題かもしれません。 – kmc
私は周りを見ていると私は 'fminsearch'は実際にあなたの関数は入力変数を1つしか持たないことが必要だと思います。入力変数の1つを評価し、その上で 'fminsearch'を実行するループが必要な場合があります。上の最初の 'fminsearch'スニペットでこれをやろうとしていたようですが、ループの中で、' i = size(A、1) 'のところで' fun 'を得るだけです。私が試したたびに、ループ内で無名関数を使うと 'A(i)'を評価せずに変数として 'A'と' i'を読み込むことになりました。 – kmc