Ошибка измерения nlinfit

Я использую нелинейный инструмент в 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]);

1 ответ

Функция, используемая в nlinfit, принимает вектор параметра в качестве первого аргумента, а затем независимый вектор данных. Ты хочешь,

myfun = @(b,t)exp(t.*b(1)+b(2));

Обратите внимание, что вы можете просто использовать * скорее, чем .* в этом случае тоже.

Другие вопросы по тегам