У меня есть функция, которая вычисляет акустическую силу рыбы в зависимости от угла падения фронта волны на рыбу. У меня также есть несколько измерений акустической прочности на месте. Я пытаюсь выяснить, какое нормальное распределение углов приводит к тому, что данные модели наиболее точно соответствуют данным in situ.
Для этого я пытаюсь использовать функцию 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, но я не совсем уверен, что они делают и какой эффект они будут иметь. Если это помогает, типичные значения, с которыми я имею дело, обычно составляют около -45 дБ.
Спасибо!