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