2016-11-03 6 views
0

私の宿題では、最小円を計算することになっています。最初の部分は、ユークリッド距離を計算するために私を必要とし、私は次のコードであることを管理する:私は関数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]) 

しかし、入力引数が不十分だと言います。私は非常に多くのことを試してきたので、それらの多くを削除したので、私は多くの試行に達することができません。

答えて

0

あなたが既に試したことを投稿し、あなたが苦しんでいる問題を説明してくれれば助けになります。

編集:ここでは、センター機能のオーバーロードですか?私はそのコードが走っているのが不思議です。

+0

ああ、申し訳ありません。私は今試したことを追加するために編集中です。いくつかのケースでは、システムに過負荷がかかり、 "メモリ不足"エラーが発生します。場合によっては、入力引数が不十分なだけです。 – ewesninski

+0

私はあなたがdennemeを定義しているのを見ましたが、私は終わりが見えないので、あなたはその部分を含めていないと仮定しています...それは 'denneme'が2つの入力を取り、あなたはそれを与えているようです。それはあなたの問題かもしれません。 – kmc

+0

私は周りを見ていると私は 'fminsearch'は実際にあなたの関数は入力変数を1つしか持たないことが必要だと思います。入力変数の1つを評価し、その上で 'fminsearch'を実行するループが必要な場合があります。上の最初の 'fminsearch'スニペットでこれをやろうとしていたようですが、ループの中で、' i = size(A、1) 'のところで' fun 'を得るだけです。私が試したたびに、ループ内で無名関数を使うと 'A(i)'を評価せずに変数として 'A'と' i'を読み込むことになりました。 – kmc

関連する問題