2010-12-15 45 views
2

私は魚の波面の入射角に応じて魚の音響強度を計算する機能を持っています。私はまた、音響強度の現場測定をいくつか行っています。私がしようとしているのは、モデルデータが現場のデータと最もよく一致するような角度の正規分布を計算することです。これを行うにはMatlab(fmincon)の問題を最小化する問題

、私は次の関数を最小化するためにMATLAB関数fminconのを使用しようとしている:

function f = myfun(x) 

TS_krm = KRM(normrnd(x(1),x(2),100,1), L); 
f = sum((TS_insitu - TS_krm).^2); 

がそれではこの機能はありません、私は最小限にしたい二乗残差の合計を計算しています。これを行うために、私はfminconのを使用してみてください:

x = fmincon(@myfun, [65;8], [], [], [], [], [0;0], [90;20], [], options); 

したがって、私はからのものであると私はまた平均の角度範囲を設定しています65度の平均値と8の標準偏差が始まるの向きを使用しています0〜90度であり、標準偏差の範囲は0〜20度である。

しかし、関数を最小にする平均と標準偏差の角度を正しく見つけることはできないようです。通常は、N(65,8)の周りに何かを出力します。出発点から遠い他の多くの値を実際に試していないのとほとんど同じです。

私はこの作業をするために何ができるのですか?私はTolXとTolFunの設定をすることができますが、私はそれらが何をし、彼らが持っていたどんな効果が本当によく分かりません。それが役に立つなら、私が扱っている典型的な値は通常約-45dBです。

ありがとうございます!

+3

「魚の音響強度」?たぶん、魚からのソナーエコーの音の強さ?前者ははるかに良いバンド名ですが。とにかく、それは興味深い問題です! – mtrw

+0

ええ、私はあまりにも技術的になりたくありませんでした。私が扱っている実際の値は、Target Strengthsです。これは、本質的にエコーから受け取ったパワー強度と出力パワー強度の比です。 – Josiah

答えて

1

さまざまな入力に対して、fの値の大きさの順番を調べる必要があります。 TolFun(fの変化に対する最小化アルゴリズムの許容差)に入れる必要がある値に影響するかもしれません。たとえば、TolFun = 1e-6で、f(45)とf(64)の差が1e-7の場合、アルゴリズムは65で停止することがあります。 また、使用しているアルゴリズムでは関数が微分可能である(微分を使って "どこに行くか"を見つける)、これがあなたの関数であるかどうかは分からない。そうでない場合は、シンプレックスを使用して最小値を見つける必要があります。

+0

私はTolFunを変えてみて、それがまったく役立つかどうかを見ることができます。私はそれをもっと絞り込むつもりだと思っていますが、おそらく改善できるでしょう。私の主な問題の1つは、関数が正規分布を含んでいるので、各関数の反復がわずかに異なる結果になるということでした。したがって、fminconが絶えず変化しているものを最小化することは難しくなります。私はシンプレックスもチェックアウトします。助けてくれてありがとう。 – Josiah