Я использую инструмент нелинейной подгонки в Matlab. Я продолжаю получать следующую ошибку:
Ошибка при использовании nlinfit (строка 210) MODELFUN должна быть функцией, которая возвращает вектор подобранных значений того же размера, что и Y (1 на 100). Предоставленная вами модельная функция вернула результат 1 на 2. Одной из распространенных причин несоответствия размера является использование матричных операторов (, /, ^) в вашей функции вместо соответствующих поэлементных операторов (., ./, .^).
Я нашел этот вопрос очень похожим на мой, но все равно получаю ту же ошибку. Я попытался вычислить myfun на консоли, используя вектор в качестве входных данных, что дает мне вывод правильного размера. Будет тонна помощи, если кто-нибудь может указать на ошибку.
% Defining the function
myfun = @(t,b)exp(t.*b(1)+b(2));
[y_a] = arrayfun(myfun,x_a);
% Using nonlinear least square minimization
beta0 = [1 1];
nlinfit(x,y,myfun, beta0)
Заранее спасибо...:)
Изменить: обнаружил, что это работает. g = fittype('exp(k*x + a)');
[fit1,gof,fitinfo] = fit(x',y',g,'StartPoint',[1 1]);