У меня есть определенный спектр спектра мощности, сохраненный как test
, в зависимости от частотной матрицы f
.fit curve с lsqcurvefit
спектр Этой силы обычно выглядит как на рисунке ниже
Следует заметить, что приведенная выше stemms спектра мощности от моделируемых временных рядов.
То, что я хочу сделать, в принципе, чтобы соответствовать кривой, приближающейся к моделируемой спектра мощности, как показано ниже:
Я знаю, что теоретический спектр мощности может быть определена следующим образом:
function ps_theo = ps_th(L,Uhub,f)
const = L/Uhub;
f_x = 6.*f.*(L/Uhub);
exp = 5/3;
ps_theo = (4*const)./((1 + f_x).^exp);
end
, где L
является постоянный масштаб длины, Uhub
, постоянную скорость и частота f
вектор.
Вопрос: Я не знаю значения «L», поэтому я думал о оптимизированном нелинейном разрешении с использованием lsqcurvefit
.
я проводимый следующим образом:
xdata = f;
ydata = test;
Uhub = 10;
fit_func = @(L) ps_th(L,Uhub,f);
L_opt = lsqcurvefit(@fit_func,330.2,xdata,ydata)
, который извлекает Сообщи ошибки на количестве входов переменных для функции fit_func
.
Не могли бы вы пролить свет?
Прочитайте справку lsqcurvefit. Посмотрите на примеры. Как он передает аргументы вашей функции? Как оптимизировать, когда имеется более одной переменной? ДУМАТЬ! – 2013-04-08 13:09:28